반효경 (4) 썸네일형 리스트형 운영체제 (10) - Deadlock (데드락) Deadlock(데드락) 일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태 자원(Resource) 하드웨어, 소프트웨어 등을 포함하는 개념 예 ) I / O devices, CPU cycle, memory space, semaphore 등 Deadlock 발생 조건 4가지 Mutual Exclusion (상호 배제) 매 순간 하나의 프로세스만이 자원 사용 가능 No preemption (비선점) 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않음 Hold and wait (보유 대기) 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있음 Circular wait ( 순환 대기) 자원을 기다리는 프로세스간에 사이클이 형성되어야 함 위 4가지 조건을 .. 운영체제(9) - 고전적인 동기화 문제들 이전 포스팅에서는 동기화 도구인 Semaphores와 Monitor를 알아보았다 이번 포스팅에서는 고전적인 동기화 문제들 3가지를 살펴보겠다. Bounded- Buffer Problem ( Producer - Consumer Problem ,유한 버퍼 문제) 그림과 같이 버퍼가 존재한다고 가정하자 Producer, 생산자 프로세스는 공유 버퍼에 데이터를 하나 만들어서 넣는 역할 Consumer, 소비자 프로세스는 공유 버퍼에서 데이터를 꺼내는 역할 만약 둘 이상의 생산자가 버퍼를 동시에 보고 데이터를 만들어 넣는다면 문제가 발생할 수 있다. 마찬가지로 둘 이상의 소비자가 동시에 동일한 버퍼의 데이터를 사용한다면 문제가 발생할 수 있다. 그러므로 동시에 버퍼에 접근할 수 없도록 락을 걸어줘야 한다. 락을 .. 운영체제(6) - CPU 스케줄링 CPU bound job CPU를 길게 쓰는 프로그램들 I / O bound job 입출력이 많은 작업들, 키보드 입력같은거 여러 종류의 JOB( = process)이 섞여 있기 때문에 CPU 스케줄링이 필요하다 CPU Scheduler Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다. Dispactcher CPU의 제어권을 CPU Scheduler에 의해 선택된 프로세스에게 넘긴다 이 과정을 context switch(문맥교환)라고 한다 CPU스케줄링이 필요할 때 Running - > Blocked ( 예 : I / O 요청을 위한 시스템 콜) - > 자진 반납 Running - > Ready ( 예 : 할당시간만료로 timer interrupt) - > 강제 Blocked - .. 운영체제(4) - 스케줄러와 Thread 스케줄러 어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제의 모듈을 지칭한다. Long - term Scheduler ( Job Scheduler) 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정 프로세스에 memory를 주는 문제 Short - term Scheduler ( CPU Scheduler) 어떤 프로세스를 다음번에 running 시킬지 결정 프로세스에 CPU를 주는 문제 충분히 빨라야 함( millisecond 단위) Medium - term Scheduler ( Swapper) 여유공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄 프로세스에게서 Memory를 뺏는 문제, Suspended( Stopped) 라는 프로세스의 상태를 일으킬 수 있다. 외부적인 .. 이전 1 다음