본문 바로가기

반응형

CS/운영체제

(20)
운영체제(12) - 프로세스의 메모리 할당 (연속 할당 방식) 사용자 프로세스 영역의 할당 방법 Contiguous allocation (연속 할당) : 각각의 프로세스가 메모리의 연속적인 공간에 적재되도록 Noncontiguous allocation (비연속적 할당) : 하나의 프로세스가 메모리의 여러 영역에 분산되어 올라갈 수 있음 Contiguous allocation 1. 고정 분할 방식 물리적 메모리를 주어진 개수만큼의 영구적인 분할로 미리 나누어두고 각 분할에 하나의 프로세스를 적재해 실행 시킬 수 있게함, 분할의 크기는 모두 동일하게 할 수도 있고, 서로 다르게 할 수도 있다 융통성이 없음 외부 단편화 : 프로그램의 크기보다 분할의 크기보다 작은경우에는 해당 분할이 비어 있는데도 불구하고 프로그램을 적재하지 못하기 때문에 발생하는 현상 내부 단편화 : ..
운영체제(11) - Memory, 주소, 논리적 주소 물리적 주소, 주소 바인딩 Logical address ( = virtual address) 프로세스마다 독립적으로 가지는 주소 공간 각 프로세스마다 0 번지부터 시작 CPU가 보는 주소는 logical address임 Physical address 메모리에 실제 올라가는 위치 주소 바인딩 주소를 결정 하는 것 Symbolic Address - > Logical Address - > Physical address 언제하는가?? Compile time binding : 물리적 메모리 주소가 컴파일 시 알려짐 Load time binding : Loader의 책임 하에 물리적 메모리 주소 부여 Execution time binding ( = Run time binding) 프로그램 실행 중에도 프로세스의 메모리 상 위치를 옮길 수 있..
운영체제 (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, 소비자 프로세스는 공유 버퍼에서 데이터를 꺼내는 역할 만약 둘 이상의 생산자가 버퍼를 동시에 보고 데이터를 만들어 넣는다면 문제가 발생할 수 있다. 마찬가지로 둘 이상의 소비자가 동시에 동일한 버퍼의 데이터를 사용한다면 문제가 발생할 수 있다. 그러므로 동시에 버퍼에 접근할 수 없도록 락을 걸어줘야 한다. 락을 ..
운영체제(8) -Semaphores ,Monitor Semaphores 정수 값을 가지며, 두 가지 연산인 P, V 연산에 의해서만 접근 가능한, 다중 프로그래밍 환경에서 공유 자원에 대한 접근을 제어하기 위한 동기화 도구 중 하나이다. Busy wait 방식 P(S) : while ( S
운영체제(7) - Race condition과 임계구역(Critical-Section problem) 공유 데이터 (Shared data)의 동시 접근(concurrent access)은 데이터의 불일치 문제(inconsistency)를 발생시킬 수 있다. 일관성 (consistency) 유지를 위해서는 협력 프로세스 (cooperating process)간의 실행 순서 (orderly execution)를 정해주는 메커니즘 필요 Race condition 여러 프로세스들이 동시에 공유 데이터를 접근하는 상황 Memory를 공유하는 CPU가 여럿 있는 경우 Race condition의 가능성이 있음 데이터의 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라짐 Race condition을 막기 위해서는 병행적으로 실행되는 프로세스는 동기화(Synchronize)되어야 한다 OS에서 race..
운영체제(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 - ..
운영체제(5) - 프로세스의 생성과 관련 시스템콜 프로세스 생성 부모 프로세스가 자식프로세스를 생성, fork() 시스템콜을 통하여.. 프로세스의 트리 ( 계층 구조 ) 형성 프로세스는 자원을 필요로 함 운영체제로부터 받는다 부모와 공유 자원의 공유 부모와 자식이 모든 자원을 공유하는 모델 일부를 공유하는 모델 전혀 공유하지 않는 모델 새로운 프로세스 생성시 수행 ( Execution) 상황 2가지 부모와 자식은 공존하며 수행되는 모델 자식이 종료( terminate)될 때까지 부모가 기다리는( wait ) 모델 새로운 프로세스 생성시 주소 공간( Address space) 상황 2가지 자식은 부모의공간을 복사함 자식은 그 공간에 새로운 프로그램을 올림 프로세스 종료 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려준다( exit ) - > 자..

반응형