목록OS (28)
솜은 코튼
2023.05.23 - [OS] - [OS] Mutex, 세마포어, 모니터 [OS] Mutex, 세마포어, 모니터 Mutex Locks . 임계구역을 보호하기 위해 mutex 락을 사용한다. 즉, 프로세스는 임계구역에 들어가기 전에 반드시 락을 획득해야 하고, 빠져나올 때 락을 반환해야 한다. acquire() 함수가 락을 획득하고 sommda.tistory.com 모니터 . 이전 글에서 모니터에 대해 설명하였는데 좀 더 자세히 알아보려 합니다. 먼저 동기화 하는 여러 방법들이 있었는데 예로 Mutex락, 세마포 등이 있었죠? 하지만 타이밍 오류나 잘못된 사용으로 임계구역을 보호받지 못하는 상황이 생기게 되어 이 오류를 처리하기 위해 간단한 동기화 도구를 통합한 고급 언어 구조물인 모니터 형이 있습니다...
프로세스 제어 블록(PCB) . 프로세스 제어 블록(PCB)은 프로세스를 실행하는 데 필요한 중요한 정보를 보관하는 자료 구조로 TCB라고도 한다. 모든 프로세스는 고유의 프로세스 제어 블록을 가지며 프로세스 생성 시 만들어져 완료 시 폐기된다. 포인터 PCB를 연결하여 준비 상태나 대기 상태의 큐를 구현할 때 사용 프로세스 상태 생성, 준비, 실행, 대기, 보류 준비, 보류 대기 등 어떤 상태인지 나타냄 프로세스 구분자 운영체제 내 여러 프로세스를 구별하기 위한 구분자 프로세스 카운터 다음에 실행될 명령어의 위치를 가리키는 값 저장 프로세스 우선순위 우선순위에 따라 PCB들이 여러 줄로 서 있음 각종 레지스터 정보 다음 실행을 위해 자신이 사용하던 레지스터의 중간값을 보관 메모리 관리 정보 메모리 보호..
페이지 테이블 크기 . 예로 가상 주소 공간의 크기가 2³²(4G)B, 페이지 1개의 크기는 2¹²(4,098)B이다. 전체 4GB의 가상 주소를 페이지 1개의 크기로 나누면 2²⁰(1,048,576)B이다. 페이지 테이블로 나타내려면 1,048,576개의 행과 각 행을 표현할 주소 공간 20bit가 필요하다. 즉, 페이지 테이블이 차지하는 공간은 1,048,576 X 20bit = 약 2.62B이다. 만약 페이지 크기가 2⁹(512)B이고, 2³²(4G)B의 주소공간을 가진다면 전체 페이지는 1,048,576에서 8,388,607으로 늘어나고, 페이지 테이블은 8,388,607개의 행과 23bit의 주소 공간이 필요하다. 즉, 페이지 테이블이 차지하는 공간은 8,388,607 X 23bit = 약 24..
스레싱과 프레임 할당 . 물리 메모리에는 여러 개의 프로세스가 올라와 있다. 물리 메모리의 공간이 충분하면 프로세스의 요청에 따라 할당하지만 그렇지 못할 경우 남아 있는 프레임을 어떻게 나누어줄지 정한다. 1. 스레싱 . 물리 메모리가 크면 그만큼 더 많은 프로세스가 올라올 수 있지만 작으면 스왑 영역에서 가져와야 하므로 속도가 떨어진다. 적은 수의 프로그램을 실행할 땐 문제 없지만 많은 수의 프로그램을 실행한다면? 처음에는 정상적으로 메모리에 올라오지만 메모리가 꽉 찬 후에는 스왑 영역으로 옮기는 횟수가 잦아져 정지한 것 같은 현상이 발생한다. 이와 같이 하드디스크의 입출력이 너무 많아져서 잦은 페이지 부재로 작업이 멈춘 것 같은 상태를 '스레싱'이라 한다. 스레싱은 메모리의 크기가 일정할 경우 멀티프..
2023.05.27 - [OS] - [OS] 교착 상태 해결 방법 (교착 상태 회피) [OS] 교착 상태 해결 방법 (교착 상태 회피) 2023.05.27 - [OS] - [OS] 교착 상태 해결 방법 (교착 상태 예방) [OS] 교착 상태 해결 방법 (교착 상태 예방) 2023.05.27 - [OS] - [OS] 교착 상태 (자원 할당 그래프, 식사하는 철학자 문제) [OS] 교착 상태 (자원 sommda.tistory.com 3. 교착 상태 탐지 . 앞에서 언급한 교착 상태 예방은 실제로 구현하기 어렵고, 교착 상태 회피는 구현은 가능하지만 자원을 낭비하는 문제가 있다. 교착 상태 탐지는 가장 현실적인 것인 방법으로 운영체제가 프로세스의 작업을 관찰하면서 교착 상태 발생 여부를 계속 주시하는 방식이다..
2023.05.27 - [OS] - [OS] 교착 상태 해결 방법 (교착 상태 예방) [OS] 교착 상태 해결 방법 (교착 상태 예방) 2023.05.27 - [OS] - [OS] 교착 상태 (자원 할당 그래프, 식사하는 철학자 문제) [OS] 교착 상태 (자원 할당 그래프, 식사하는 철학자 문제) 교착 상태 . 교착상태는 다른 프로세스의 잡업이 끝나기를 기다 sommda.tistory.com 2. 교착 상태 회피 . 앞에서 교착 상태 해결 방법 중 하나인 교착 상태 예방에 대해 알아보았다. 교착 상태 예방 알고리즘은 요청 방법에 제한을 두어 교착 상태를 예방한다. 하지만 이 방식은 장치의 이용률이 저하되고 시스템 총처리율이 감소한다는 것이다. 교착 상태 회피는 프로세스에 자원을 할당할 때 어느 수준 이..
2023.05.27 - [OS] - [OS] 교착 상태 (자원 할당 그래프, 식사하는 철학자 문제) [OS] 교착 상태 (자원 할당 그래프, 식사하는 철학자 문제) 교착 상태 . 교착상태는 다른 프로세스의 잡업이 끝나기를 기다리며 작업을 진행하지 못하는 상태이다. 아사현상은 운영체제가 잘못된 정책을 사용하여 지연되는 문제이고, 교착상태는 여러 프 sommda.tistory.com 교착 상태 해결 방법 . 앞에서 교착 상태가 발생할 수 있는 4가지 조건에 대해 설명하였다. 이번엔 복잡한 교착 상태를 해결할 수 있는 방법에 대해 알아보자. 교착 상태를 해결하는 방법은 예방, 회피, 검출과 교착 상태가 발견된 후에 자원을 회복하는 방법이 있다. 해결 방법 특징 교착 상태 예방 교착 상태를 유발하는 네 가지 조..
교착 상태 . 교착상태는 다른 프로세스의 잡업이 끝나기를 기다리며 작업을 진행하지 못하는 상태이다. 아사현상은 운영체제가 잘못된 정책을 사용하여 지연되는 문제이고, 교착상태는 여러 프로세스가 작업하다 보니 자연적으로 발생하는 문제이다. 즉, 중요한 점은 교착 상태와 아사 현상이 다르다는 것이다. 한 프로세스가 두 자원을 다 점유하거나, 반대로 두 자원을 다 기다리는 상태라면 교착 상태가 아니다. 이는 서로 진행을 방해하는 것이 아니라 선후 관계를 만드는 것이고 서로 진행을 방해해야만 교착 상태가 발생한다 할 수 있다. 교착상태는 공유할 수 없는 자원을 사용할 때 발생하고, 자원을 하나씩 가지고 서로가 가진 자원을 기다릴 때 발생한다. 예로 P1은 프린터를 할당받은 후 CD 레코더를 기다리고, P2는 CD..
디스크 스케줄링 . 디스크의 데이터 전송 시간 중에서는 탐색 시간이 가장 느리다. 디스크 스케줄링은 트랙의 이동을 최소화하여 이 탐색 시간을 줄이는 데 목적이 있다. 디스크 스케줄링 기법에 대해 알아보자. 1. FCFS 디스크 스케줄링 . First Come, First Service. 이름 그대로 요청이 들어온 트랙 순서대로 서비스한다. 아래 그림을 보면 요청된 트랙 번호 순서대로 매우 큰 폭으로 움직인다. 2. SSTF 디스크 스케줄링 . Shortest Seek Time First. 현재 헤드가 있는 위치에서 가장 가까운 트랙부터 서비스한다. 만약 두 트랙의 거리가 같다면 먼저 요청받은 트랙을 서비스한다. 효율성은 좋지만 헤드가 중간에 위치하면 가장 안쪽이나 바깥쪽에 있는 트랙을 서비스 받을 확률이..
스케줄링 알고리즘 . 스케줄링 알고리즘은 크게 비선점형 알고리즘과 선점형 알고리즘으로 나뉜다. 명칭 그대로 다른 프로세스가 사용 중인 CPU를 강제로 선점할 수 있냐 없냐인데 우선순위가 높은 프로세스 등의 효율성을 고려해 선점형을 선호한다. 아래 표는 스케줄링 알고리즘의 종류를 분류해 놓은 것이다. 스케줄링 알고리즘의 효율성을 평가할 때 CPU 사용률, 처리량, 대기 시간, 응답시간, 반환시간을 기준으로 하며 사용률과 처리량은 계산하기 어려워 주로 대기 시간, 응답 시간, 반환 시간을 계산한다. 스케줄링 알고리즘의 성능을 비교할 때 주로 평균 대기 시간을 본다. 평균 대기 시간은 모든 프로세스의 대기 시간을 합한 뒤 프로세스의 수로 나눈 값이다. 여기서 알 수 있는 것은 작업 패턴을 바꾸어 평균 대기 시..