본문 바로가기

운영체제

(14)
[운영체제] Process synchronization (2) 동기화 관련 문제와 해결방법에 대하여 Bounded-Buffer Problem => Shared-Memory Solution 일반적으로 Producer, Consumer 문제라고 함 Producer는 데이터를 만들기만 하고, Consumer는 소비하기만 함 Producer가 Buffer에 데이터를 쓰면 Consumer가 거기에서 읽어감 Buffer 크기는 제한되어 있으며, 프로세스 간 공유함 Producer가 데이터를 쓸 때 Consumer가 읽어가면 안되고, Consumer가 읽어갈 때 Producer가 쓰면 안됨 -> semaphore로 해결 가능(Buffer에 들어갈 때 P 호출, 나올 때 V 호출) Buffer가 한정된 크기를 가지므로 Producer가 필요할 때마다 데이터를 쓸 수 없음 Buff..
[운영체제] Process Synchronizationtion (1) Race condition: 여러 프로세스가 동시에 같은 데이터에 접근할 때 => 동기화 필요 The Critical-Section Problem n개의 프로세스들이 공유된 데이터에 경쟁적으로 접근할 때, 공유된 데이터에 접근하는 코드를 critical section이라 함 어떤 프로세스가 critical section을 수행 중이면 다른 어떤 코드도 critical section을 수행하지 못하게 해야 함 수행하지 못하게 막는 방법 -> solution Solution of the critical-section problem Mutual Exclusion: 어떤 프로세스가 critical section을 수행 중이면 다른 어떤 코드도 critical section을 수행하지 못하게 해야 함 과도하게 막..
[운영체제] CPU Scheduling 현재 CPU 자원을 수행 중인 process 중 누구에게 줄 것인가를 결정하는 것 process 상태를 변화시키는 process scheduling 과는 구별됨 short-term scheduler에 해당됨 CPU scheduler의 중요한 원칙 CPU를 ㅃㄹㅃㄹ 줘서 사용자가 직접적으로 interactive하다고 느끼게 만들어 줄 필요가 있음 => I/O bound job에 먼저 CPU를 줘야 되겠다 CPU Scheduler Multiprogramming 환경에서 동작 ready 상태의 프로세스에서 하나를 골라 CPU 할당해줌 언제 발생하는가? 어떤 프로세스가 cpu를 잡아서 돌다가 waiting 상태로 갔을 때 (I/O request) running 상태에서 ready 상태로 갈 때 (멀티 프로그래밍..
[운영체제] Process and Threads Process: 실행 중인 프로그램 실체: 프로그램이 실행되는 데 필요한 모든 것들을 저장하는 자료구조 분기나 JUMP가 없으면 기본적을 sequential로 실행 포함하는 것 1. text section: 프로그램 코드 2. stack section: function call과 관련된 데이터들 (parameter, return address, local variables ...) -> top에서 pop하면 함수에 들어갔다 나오는 정보들을 바로 알 수 있음 3. data section: static, global variable 저장 4. heap section: 동적 메모리 할당으로 저장한 데이터 관리하는 영역 , malloc 5. 동작, 컨트롤, 상태 에 필요한 program counter, regi..
[운영체제] Operating System Overview Multiprogramming - OS는 CPU가 불필요한 대기를 하지 않게 하기 위해서 기본적으로 멀티프로그래밍을 해야 함 - 멀티프로그래밍을 함으로써 멀티태스킹까지 가능해짐 - 하나의 애플리케이션만으로는 인터럽트 대기 등의 이유로 CPU가 바쁠 수 없음 -> 효율성을 위해 멀티프로그래밍 필요 - 여러 개의 프로그램이 모두 메모리에 올라가야 하기 때문에 가상 메모리 필요 - CPU 스케줄링 = job 스케줄링 = 프로세스 스케줄링 ㄴ 어떤 프로그램을 지금 CPU가 실행할 지 결정해야 함 - I/O 등으로 인해 CPU가 다른 일을 해야 하면 switch 하는 기능 필요 Multitasking = Timesharing - 굳이 I/O가 발생하지 않더라도 프로그램 switch 할 수도 있음 spooling)..
[운영체제] Computer System Overview 기본 요소 - Processor(CPU), Main Memory, System bus, I/O modules Processor (CPU): ALU(Arithmetic Logic Unit), CU(Control Unit), Register로 구성 - ALU: 연산 담당 - CU: 컨트롤 - Register: 매우 작지만 CPU 안에 있어서 접근 속도 빠름, 연산을 위한 저장 공간 1. data I/O registers: CPU와 메모리 간 데이터를 주고 받기 위함 Memory address register (MAR); 메인 메모리에 대한 주소 Memory buffer register(MBR); 메인 메모리에 대한 버퍼 => MAR에 적힌 주소에 MBR에 적힌 데이터를 LOAD(read)/STORE(writ..