본문 바로가기
728x90
반응형

공부/OS8

[OS] 페이징(paging)과 세그먼테이션(segmentation) 프로그램은 실행 전 변수와 같은 기호 주소를 실제 주소로 바인딩 해야한다. 바인딩은 컴파일, 메모리 적재, 실행 시간 등에 바인딩 될 수 있다. 현재는 대부분 실행 시간에 기호 주소를 실제 주소로 바인딩한다. 컴파일, 적재 시간 바인딩과 달리 실행 시간 바인딩은 논리적 주소와 물리적 주소가 다르다. 논리적 주소와 물리적 주소는 서로 매핑되는데 이러한 매핑은 MMU(Memory Managerment Unit)에 의해 이루어진다. 동적 적재 초창기에는 모든 프로그램을 주기억장치에 적재하는 정적 적재(static loading)를 사용했다. 그런데 정적 적재는 메모리의 용량이 부족해질 수 있는 문제가 있다. 이러한 문제는 루틴이 호출될 때 해당 루틴을 주기억장치에 적재하는 동적 적재(dynamic loadin.. 2023. 6. 20.
[OS] 교착 상태 (deadlock) 시스템에는 유한 개의 자원이 존재하고 프로세스는 이 자원을 사용한다. 자원을 사용하기 위해 프로세스는 자원을 요청하고 사용하고 해제한다. 만약 사용하려는 자원이 이미 다른 프로세스에 의해 사용 중이라면 대기 상태에 들어간다. 그런데 어떤 집합의 모든 프로세스가 자원을 할당받기를 기다리고 있고 각 프로세스가 이 집합의 어떤 프로세스가 소유 중인 자원을 할당받기를 기다리고 있다면 이를 교착 상태(deadlock)에 있다고 한다. 교착 상태는 다음과 같은 4가지 조건을 만족해야 교착 상태라고 한다. 상호배제 : 한 번에 하나의 프로세스만 자원을 사용할 수 있다. 점유와 대기 : 프로세스는 최소한 하나의 자원을 점유하고 있고 다른 프로세스가 점유 중인 자원을 대기 중이다. 비선점 : 점유된 자원은 점유 중인 프.. 2023. 6. 19.
[OS] CPU scheduling 알고리즘 1. FCFS(First Come First Served) 스케줄링 요청한 순서대로 프로세스에게 cpu를 할당해준다. 비선점 방식이다. 다음과 같이 프로세스들이 요청을 했다고 하자. 다음과 같은 순서대로 실행될 것이다. 이 방식은 수행 시간이 큰 프로세스가 모두 수행되는 동안 다른 프로세스가 기다려야 한다는 단점이 존재한다. 2. SJF(Shortest Job First) 스케줄링 SJF 알고리즘은 cpu 수행 시간이 짧은 프로세스부터 cpu를 할당해주는 방식이다. (수행 시간이 같으면 요청한 순서대로) 비선점 방식이다. 다음과 같이 프로세스의 요청이 동시에 들어왔다고 하자. 수행 시간이 짧은 프로세스부터 실행하기 때문에 아래와 같이 실행될 것이다. 평균 대기 시간이 짧다는 장점이 있다. 3. SRTF(.. 2023. 6. 11.
[OS] 프로세스 동기화 문제 (세마포어) 프로세스는 공유 메모리를 사용하여 공통된 변수와 버퍼를 공유한다. 그런데 context switching을 통해 현재 cpu를 할당받은 프로세스가 달라지면 공유 메모리에 동시에 접근하는 이슈가 발생할 수 있다. 이를 동기화 이슈라고 한다. 동기화 이슈 예를 들어서 A와 B가 100만원이 들어있는 같은 통장에 10만원씩 예금했다고 해보자. 10만원을 예금하는 코드의 구성은 다음과 같다. 통장의 총 금액을 가져온다. 해당 금액에 10만원을 추가한다. 추가한 금액을 통장에 저장한다. 멀티 프로세스 환경에서는 프로세스를 동시에 실행할 수 없다보니 두 프로세스를 조금씩 번갈아가면서 실행하게 된다. 그런데 다음과 같이 context switching이 발생할 수 있다. (빨간색이 프로세스 A, 초록색이 프로세스 B.. 2023. 5. 27.
728x90
반응형