반응형

데드락(Deadlock, 교착 상태)이란?


데드락 

운영체제에서 데드락(교착상태)이란 시스템 자ㅣ원에 대한 요구가 뒤엉킨 상태

 

즉 둘 이상의 프로세스가 다른 프로세스가 ㅇ점유하고 있는 자원을 서로 기다릴때 무한 대기에 빠지는 상황

 

 

데드락의 발생 조건 

 

  • 상호 배제
    • 한 번에 프로세스 하나만 해당 자원을 사용할 수 있다. 사용 중인 자원을 다른 프로세스가 사용하려면 요청한 자원이 해제될 때까지 기다려야 한다.
  • 점유 대기
    • 자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 한다.
  • 비선점
    • 이미 할당된 자원을 강제로 빼앗을 수 없다(비선점).
  • 순환 대기
    • 대기 프로세스의 집합이 순환 형태로 자원을 대기하고 있어야 한다.
  • 위 4가지 상활이 모두 발생 되어야 데드락이 걸린다.

데드락(Deadlock)의 해결법

데드락의 해결법을 크게 3가지로 분류할 수 있습니다.

  • 데드락이 발생하지 않도록 예방(prevention) 하기
  • 데드락 발생 가능성을 인정하면서도 적절하게 회피(avoidance) 하기
  • 데드락 발생을 허용하지만 데드락을 탐지(detection)하여, 데드락에서 회복하기
반응형
반응형

물리 메모리 크기의 한계를 극복하기 위해 나온 기술 

 

물리 메모리 보다 큰 프로세스를 수행하기 위해 사용

 

ex) 100MB 메모리 크기에서 200MB 프로세스를 어떻게 돌리는가? 

 

가상 메모리의 핵심은 필요한 부분만 메모리에 부분만 적재 하는것 

 

프로세스를 실행 할 떄 실행에 필효한 부분만 메모리에 올린다 .

 

 

 

참조 : 

https://velog.io/@syoung125/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%9E%AC-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC%EB%9E%80

 

반응형
반응형

준비 큐에 있는 프로세스에 대해 cpu 할당 하는 방법

 

스케쥴링의 목적

 

스케쥴링의 목표에는 3가지 

 

1. cpu의 활용을 최대화

2. 평균 대기 시간의 최소화

3. 처리량의 최대화 

 

스켖쥴링은 멀티 프로세싱 운영체제를 디자인 하는 일과 컴퓨터의 멀티 테스킹 작업을 만들어 내는 데에 핵심 개념이다. 

 

스케줄링 알고리즘에는 무엇이 있나?

FCFS(First Come, First Served), SJF(Shortest Job First), Priority Scheduling, RR(Round Robin) Scheduling 등이 있다.

 

FCFS(처음온 것은 첫번째로 저장한다.) 

 

FCFS는 irst Come, First Served 의 약자이다. 즉 먼저온 사람 먼저 대접한다는 뜻으로 cpu를 처음 요구한 프로세스가 cpu를 처음ㅇ 사용한다는 의미의 시케쥴링 알고리즘이다. 

 

SJF 알고리즘은 무엇인가?

 

SJF는 Shortest job Frist 의 약자이다. 가장 시간이 적게 걸리는 작업을 먼저한다는 뜻으로 정의 는 cpu가 릴리즈 되어 있을때 가장 시간이 적게 걸리는 프로세스가 선택되어 실행된다는 것이다. 

 

Priority Scheduling 은 무엇인가?\

 

높은 우선순위를 가진 프로세스거ㅏ 항상 먼저 cpu를 사용할 수있도록 구현한다. 우선 순위 기반 스케줄링 에는 치명적인 단점 이슈가 있다. 굶주림이다. 우선순위가 낮은 프로세스는 영원히 작동하지 않을 수 있다.

 

Round Robin(RR) 스케줄링은 무엇인가?

 

Round Robin 스케줄링은 각각의 프로세스가 공평하게 시간 간격 동안 cpu를 활용 할 수 있도록 하는 스케줄링 알고리즘이다.

 

 

 

참고 https://thinkpro.tistory.com/122

 

[운영체제] CPU 스케줄러

Q. 스케줄러는 무엇이며, 스케줄링을 하는데 있어서 중요한 것은 무엇인가? 스케줄러는 레디 큐에 존재하는 프로세스들을 특정한 우선순위를 기반으로 CPU를 할당받게 해주는 역할을 한다. 스케

thinkpro.tistory.com

 

반응형
반응형

프로세스와 스레드의 차이 

 

프로세스 : 실행중인 프로그램

스레드 : 프로세스 안 실행 단위 

 

예를 들어 유튜브를 보고 있다고 생각해보자 

 

유튜브를 보면 

재생중인 유튜브 아래의 좋아요 버튼 이 하나하나가 스레드 이며

이것이 모이면 프로세스가 된다.

 

프로세스가 메모리에 올라 갈 떄 운영체제로 부터 시스템 자원을 할당받는다. 

이 때 운영체제는 프로세스마다 각각 독립된 메모리 영역 (코드/데이터/스택/힙) 형식으로 할당해 준다.

ㅂ각각 독립된 메모리 영역을 할당해 주기 때문에 프로세스는 다른 프로세스의 변수나 자료에 접근 할 수 없다. 

 

 

 

이와 다르게 스레드는 메모리를 서로 공유할 수 있다고 한다. 이에 대해 더 자세히 설명하자면 프로세스가 할당받은 메모리 영역 내에서 스택형식으로 할당된 메모리 영역은 따로 할당 받고 나머지 코드 /데이터/힙 형식으로 할당된 메모리를 공유한다. 따라서 각가의 스레드는 별도의 스택을 가지고 있지만 힙 메모리는 서로 읽고 쓸 수 있게 된다. 

 

 

 

 

참조 : https://velog.io/@raejoonee/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

프로세스와 스레드의 차이

프로세스와 스레드의 차이는 프로세스와 스레드, 그리고 프로그램이 작동하는 방식에 대해서 잘 이해하고 있는지 확인하기 위해 기술면접에서 단골 질문 사항으로 나온다.

velog.io

 

반응형
반응형

메모리의 구조? 

 

프로그램이 실행되기 위해서는 먼저 프로그램이 먼저 메모리에 로드되어야한다.

또한 프로그램에서 사용되는 병수들을 저장할 떄 메모리도 필요하다. 

 

따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있다.

프로그램이 운영체제로 부터 항당받는 대표적인 메모리공간은 4가지 이다.

 

1. 코드(CODE)

2. 데이터 (Data)

3. 스택(Stack) 

4. 힙 (Heap)

 

총 4가지의 영역이다. 

 


1. 코드 영역

 

메모리의 코드 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부른다.

즉 cpu는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 된다. 

 


2. 데이터 영역

 

메모리의 데이터 영역은 프로그램의 전역변수와 정적(static) 변수가 저장되는 영역이다.

데이터 영역은 프로그램의 시작과 함께 할당되며 프로그램이 종료되면 소멸한다. 

 


3. 스택 영역

 

메모리의 스택 영역은 함수의 호출과 관계 되는 지역 변수와 매개변수가 저장되는 영역이다. 

스택 여역은 함수의 호출과 함께 할당되며 함수의 호출이 완료되면 소멸한다.

이렇게 스택 영역에 저장되는 함수의ㅏ 호출 정보를 스택프라임  이라고 부른다. 

 


4. 힙 영역

 

메모리의 힙 영역은 사용자가 직접 관리 할 수 있는 그리고 해야만 하는 메모리 영역 이다. 

힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제 된다.

힙영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다. 

 

반응형
반응형

운영체제란?

운영체제는 컴퓨터 시스템의 자원들을 효율적으로 관리하며 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수있도록 환경을 제공하는 여러 프로그램의 모임이다. 운영체제는 컴퓨터의 사용자와 컴퓨터 하드웨어 간의 인터페이스로써 동작하는 시스템 소프트웨어의 일종으로 다른 응용프로그램이 유용한 작업을 합수 있도록 환경을 제공한다. 

 

즉 

시스템의 자원과 동작을 관리하는 소프트 웨어

프로세스 저장 장치 및 네트워킹 사용자 하드웨어를 관리한다. 

 

 

반응형

+ Recent posts