본문 바로가기

운영체제8

06. Process SynchronizationSubFile Process Synchronization : 프로세스 동기화 = Concurrency Control 프로세스 동기화가 되기 위한 3가지 조건 Mutual Exclusion(상호 배제) CS에 동시 접근이 안됨. ​ Progress CS에 아무것도 없을 때 누군가는 접근해야 할 때 허용하게 하는것. Bounded Waiting waiting time이 유한해야 한다는 말. 알고리즘 1 이 알고리즘에서는 turn이란 변수(Synchronization variable)을 사용하여 문제를 해결한다. Process A, Process B가 있다고 가정하고 코드를 살펴보자. A,B의 차이는 turn에 있음. Process A(turn 값 = 0) do { while(turn != 0); critical secti.. 2019. 7. 28.
06. Process Synchronization 데이터 접근(intro) 컴퓨터 시스템 안에서 어떻게 데이터가 접근하는가? Race Condition(경쟁 상태) 과연 컴퓨터에 경쟁상태가 많이 생길까? CPU라는 것은 자기의 주소공간만 본다아! 그래서 문제가 안생길거처럼 보이는데, CPU가 여러개 있는 멀티 CPU 프로세서 상태에서는 아닐 것! 특히 프로세스들이 본인 직접실행할 수 없을 경우 커널의 코드가 실행될 경우. OS에서 race condtion은 언제 발생하는가? Kernel 수행 중 인터럽트 발생시 Process가 System call을 하여 kernel mode로 수행 중인데 context switch가 일어나는 경우 Multiprocessor에서 shared memory 내의 kernel data Process Synchronizatio.. 2019. 7. 28.
05. CPU Scheduling-01 CPU Scheduling 스케줄링 알고리즘을 크게 2개로 나누면 (=강제로 빼앗지 않는 방법) 비선점형 Nonpreemptive (=강제로 빼앗는 방법) 선점형 preemptive CPU의 성능척도는? CPU utilization(이용률) - keep the CPU as busy as possible - CPU가 놀지 않고 일을 하는 시간 Throughput(처리량) - # of processes that complete their execution per time unit - 주어진 시간동안 몃개의 작업을 처리 했는가? Turnaround time(소요시간, 반환시간) - amount of time to execute a particular process - CPU를 쓰러 들어와서 다쓰고 I/O하러 .. 2019. 7. 28.
04. Process Management 프로세스 관리 프로세스 생성(Process Creation) Copy-On-Write(COW) 기법 부모프로세서의 코드데이터스택을 그대로 복사하기보다는 write가 발생할 때 Copy 하겠다. 그 이전까지는 부모프로세스의 코드데이터스택을 공유한다. 가능하면 공유하고 원칙적으로는 독립적이다. 부모 프로세스가 자식 프로세스를 복제해서 생성됨 프로세스의 트리(계층 구조)형성 프로세스는 자원을 필요로 함 운영체제로부터 받는다. 부모와 공유한다. 자원의 공유 부모와 자식이 모든 자원을 공유하는 모델 일부를 공유하는 모델 전혀 공유하지 않는 모델 수행(Execution) 부모와 자식은 공존하며 수행되는 모델 자식이 종료(terminate)될 때까지 부모가 기다리는(wait)모델 주소 공간(Address space).. 2019. 7. 28.
02.Process 프로세스 프로세스의 개념 "Process is a program in execution" 프로세스의 문맥(context) 특정 시점을 놓고 봤을때, 어디까지 수행을 했는가를 알려주는 것! CPU 수행 상태를 나타내는 하드웨어 문맥 Program Counter 프로그램 카운터가 코드를 가르키고 있어, 현재 상태를 저장한다. 각종 register 프로세스의 주소 공간 프로세스 관련 커널 자료구조 PCB(Process Control Block) Kernel stack 과거의 상태를 현재에 정확하게 상태를 규명하는 것을 문맥이라고 한다. 문맥은 위와 같이 크게 3개에 따라 분류할 수 있다. 프로세스의 DATA 영역 안에 PCB로 저장한다. 프로세스 하나 실행할 때마다 PCB를 얼마나? 메모리를 얼마나? 줘야할지.. 2019. 7. 28.
00. 운영체제란 무엇인가? 운영체제란 무엇인가? 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 협의의 운영체제(커널) 운영체제의 핵심 부분으로 메모리에 상주하는 부분 광의의 운영체제 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념 목적 컴퓨터 시스템의 자원을 효율적으로 관리 컴퓨터를 편리하게 사용할 수 있는 환경을 제공 운영 체제의 분류 동시 작업 가능 여부 단일 작업(Sinlge Tasking) Ex) MS-DOS 다중 작업(multi tasking) UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음. 사용자의 수 단일 사용자 MS-DOS, MS Windows 다중 사용자 UNIX, NT server .. 2019. 7. 21.
왜 세마포어(Semaphore)가 생겼나? 왜 세미포어가 생겼나? 프로세스 간 메시지를 전송하거나, 공유메모리를 통해 특정 데이터를 공유하게 되는 경우 문제가 발생할 수 있습니다. 즉, 공유된 자원에 여러 개의 프로세스가 동시에 접근하면서 문제가 발생하는 것으로써 공유된 자원 속 하나의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한해 두어야 하기 때문에, 이를 위하여 고안된 것이 바로 Semaphore 입니다. Cf) 세마포어와 뮤텍스의 차이는? 세마포어는 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것. 뮤텍스는 공유된 자원의 데이터를 한 쓰레드가 접근하는 것을 막는 것. 컴퓨터가 여러 프로그램을 동시에 수행하는 다중 프로그래밍 시스템에서는 프로세스들간의 상호배제와 동기화를 위한 기본적인 연산이 필요하게 되고 세마포어.. 2019. 7. 21.
모니터란 무엇인가? 자바 모니터 자바 스레드 동기화 모델은 "모니터"라는 개념을 적용하고 있다. 모니터에 대해서 먼저 간단하게 살펴보고 자바 동기화에 대해 상세하게 살펴보자. Monitor(모니터)의 개념 하나의 데이터(객체)마다 하나의 모니터를 결합할 수 있으며, 모니터는 그것이 결합된 데이터(객체)가 동시에 두개 이상 의 스레드에 의해 접근 할 수 없도록 막는 잠금(lock)기능을 제공함으로써 동기화를 수행한다는 것이 주된 내용이다. 즉, 데이터(객체)에 모니터를 결합하면 하나의 스레드가 그 데이터를 사용하는 동안에는 다른 스레드들이 그 데이터를 사용할 수 없게 된다. 자바에서는 synchronized 메소드가 선언된 객체와 synchronized 블럭에 의해 동기화되는 모든 객체에 고유한 모니터가 결합이 되어 동기화 .. 2019. 7. 21.