본문 바로가기

Computer Science31

Process Synchronization(3)-프로세스 동기화 Classical Problems of Synchronization Bounded-Buffer Problem (Producer-Consumer Problem) Readers and Writers Problem Dining-Philosophers Problem Bounded-Buffer Problem (Producer-Consumer Problem) Buffer가 유한한 환경에서 생산자-소비자 문제 생산자 프로세스와 소비자 프로세스는 여러 개가 존재 Shared data buffer 자체 및 buffer 조작 변수(empty/full buffer의 시작 위치) Synchronization variables mutual exclusion Need binary semaphore (shared data의 mut.. 2022. 3. 16.
Process Synchronization(2)-프로세스 동기화 Initial Attempts to Solve Problem 두 개의 프로세스가 있다고 가정 P0, P1 프로세스들의 일반적인 구조 do{ entry section critical section exit section remainder section }while(1); 프로세스들은 수행의 동기화(Synchronize)를 위해 몇몇 변수를 공유할 수 있다 → synchronization variable 프로그램적 해결법의 충족 조건 *가정 모든 프로세스의 수행 속도는 0보다 크다. 프로세스들 간의 상대적인 수행 속도는 가정하지 않는다. 상호 배제 (Mutual Exclusion) 프로세스 Pi가 critical section 부분을 수행 중이면 다른 모든 프로세스들은 그들의 critical section에.. 2022. 3. 16.
Process Synchronization(1)-프로세스 동기화 데이터의 접근 컴퓨터 시스템 안에서 데이터가 접근되는 패턴(1-2-3-4) Race Condition(경쟁상태) 두 개 이상의 프로세스가 공통 자원을 병행적으로(concurrently) 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서로 이루어졌는지에 따라 그 실행 결과가 같지 않고 달라지는 상황을 말한다. Race의 뜻 그대로, 간단히 말하면 경쟁하는 상태, 즉 두 개의 프로세스(스레드)가 하나의 자원을 놓고 서로 사용하려고 경쟁하는 상황을 말한다. 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라진다. 프로세스는 일반적인 경우, 자기 주소 공간만 접근하기 때문에 Race Condition이 발생할 일이 없음. OS에서 발생하는 Race Condition Ker.. 2022. 3. 11.
CPU Scheduling-CPU스케줄링 CPU and I/O Bursts in Program Execution 어떤 프로그램이든지 위 와 같은 절차를 실행하며 프로그램 실행이 진행됨 CPU burst : CPU만 연속적으로 쓰면서 instruction을 실행하는 단계 I/O burst : I/O를 실행하고 있는 단계 모든 프로그램은 CPU burst와 I/O burst가 반복되는 절차를 갖는다. 단, 프로그램마다 burst의 빈도수는 다르다. 주로 사람이 interaction을 하는 프로그램이 CPU burst, I/O burst의 반복 빈도가 높다. 반면, 과학/계산용 프로그램은 CPU brust의 실행 시간이 길다. CPU-burst Time의 분포 여러 종류의 job(=process)이 섞여 있기 때문에 CPU 스케줄링이 필요하다. In.. 2022. 3. 10.