묻공러
'분류 전체보기' 카테고리의 글 목록 (33 Page)

분류 전체보기

CS/[혼자 공부하는] 운영체제

6-2] 가상 메모리: 페이징을 통한 가상 메모리 관리

페이징 (paging) 프로세스를 일정 크기로 자르고, 이를 메모리에 불연속적으로 할당하는 방식 프로세스의 논리 주소 공간을 페이지(page)라는 일정 단위로 자르고 메모리의 물리 주소 공간을 프레임(frame)이라는 페이지와 동일한 일정한 단위로 자른 뒤 페이지를 프레임에 할당하는 가상 메모리 관리 기법 이를 통해, 외부 단편화를 해결 페이징에서의 스와핑 프로세스 단위의 스왑 인, 스왑 아웃이 아닌 페이지 단위의 스왑 인(페이지 인), 스왑 아웃(페이지 아웃) 메모리에 적재될 필요가 없는 페이지들은 보조기억장치로 스왑 아웃 실행에 필요한 페이지들은 메모리로 스왑 인 프로세스를 실행하기 위해 모든 페이지가 적재될 필요 없다 달리 말해 물리 메모리보다 큰 프로세스도 실행될 수 없다 하지만, 메모리 내에서 ..

CS/[혼자 공부하는] 운영체제

6-1] 가상 메모리: 연속 메모리 할당

연속 메모리 할당 프로세스에 연속적인 메모리 공간을 할당 스와핑 현재 사용되지 않는 프로세스들을 보조기억장치의 일부 영역으로 쫓아내고 그렇게 생긴 빈 공간에 새 프로세스 적재 실제 메모리 크기 보다 프로세스들이 요구하는 메모리 공간 크기 크더라도 가능 메모리 할당 방식 프로세스는 메모리의 빈 공간에 할당되어야 한다 빈 공간이 여러 개라면 세가지 방식을 통해 할당한다 - 최초 적합 (first-fit) 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식 검색 최소화, 빠른 할당 - 최적 적합 (best-fit) 운영체제가 빈 공간을 모두 검색해본 뒤, 적재 가능한 가장 작은 공간에 할당 - 최악 적합 (worst-fit) 운영체제가 빈 공..

CS/[혼자 공부하는] 운영체제

5-2] 교착상태: 교착 상태 해결 방법

교착 상태 해결: 예방, 회피, 검출 후 회복 교착 상태 예방 애초에 교착 상태가 발생하지 않도록 교착 상태 발생 조건(상호 배제, 점유와 대기, 비선점, 원형 대기)중 하나를 없애버리기 - 상호 배제를 없애면? 모든 자원을 공유 가능하게 하면서 현실적으로 불가능 - 점유와 대기를 없애면? 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분 자원의 활용률을 낮출 수 있기에 좋지 않은 방식 - 비선점 조건을 없애면? 선점이 가능한 자원(e.g. CPU)에 한해 효과적 하지만 모든 자원이 선점 가능한 것은 아니다 ex. 프린트 도중에 멈춰버린다면... - 원형 대기 조건을 없애면? 자원에 번호를 붙이고 오름차순으로 할당하면 원형 대기는 발생하지 않음 하지만 모든 자원에 번호 붙이는 것..

CS/[혼자 공부하는] 운영체제

5-1] 교착상태: 교착 상태란

교착상태의 의미 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상 교착상태를 해결하기 위해서 1. 교착 상태가 발생했을 때의 상황을 정확히 표현 2. 교착 상태가 일어나는 근본적인 이유 자원 할당 그래프 교착 상태가 발생했을 때의 상황을 정확히 표현하기 위한 그래프 교착 상태 발생 조건 파악 가능 어떤 프로세스가 어떤 자원을 할당 받아 사용 중인지 확인 가능 어떤 프로세스가 어떤 자원을 기다리고 있는지 확인 가능 프로세스는 원으로, 자원의 종류는 사각형으로 표현 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현 프로세스가 어떤 자원을 할당 받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시 프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시 교착 상태가 발생..

CS/[혼자 공부하는] 운영체제

4-2] 프로세스 동기화: 동기화 기법

뮤텍스 락 상호 배제를 위한 동기화 도구 (자물쇠 역할) 뮤텍스 락의 단순한 형태: 전역 변수 하나, 함수 두 개 자물쇠 역할: 프로세스들이 공유하는 전역 변수 lock 임계 구역을 잠그는 역할: acquire 함수 임계 구역을 잠금 해제하는 역할: release 함수 - 바쁜 대기 (busy waiting) 발생 세마포 좀더 일반화된 방식의 동기화 도구 뮤텍스 락은 공유 자원이 하나인 경우만 가능하지만 세마포는 공유 자원이 여러 개 있는 경우에도 적용 가능 세마포의 종류는 이진 세마포, 카운팅 세마포가 있는데 여기서는 카운팅 세마포를 지칭 세마포의 상호 배제를 위한 동기화 세마포의 단순한 형태: 전역 변수 하나, 함수 두 개 임계 구역에 진입할 수 있는 프로세스의 개수(사용 가능한 공유 자원의 개수)를..

CS/[혼자 공부하는] 운영체제

4-1] 프로세스 동기화: 동기화란

프로세스 동기화의 의미 공동의 목적을 위해 동시에 수행되는 프로세스들은 올바른 수행을 위해 동기화되어야 한다 프로세스 동기화는 프로세스들의 수행 시기를 맞추는 것을 의미한다 추가로, 실행의 문맥을 갖는 모든 대상은 동기화 대상이기에 스레드도 동기화 대상이다 하지만 편의상 프로세스 동기화라고 표현하며 이는 프로세스 동기화와 스레드 동기화를 모두 포함한 의미이다 프로세스 동기화의 종류 1_ 실행 순서 제어를 위한 동기화: 프로세스를 올바른 순서대로 실행하기 2_ 상호 배제를 위한 동기화: 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 실행 순서 제어를 위한 동기화 실행 순서 제어를 위한 동기화가 지켜지지 못한 대표적인 예시로는 Reader Writer problem Writer: xxx...

CS/[혼자 공부하는] 운영체제

3-2] CPU 스케줄링: CPU 스케줄링 알고리즘

선입 선처리 스케줄링 FCFS, First Come First Served 스케줄링 단순히 준비 큐에 삽입된 순서대로 처리하는 비선점 스케줄링 먼저 CPU를 요청한 프로세스부터 CPU 할당 단점: 프로세스들이 기다리는 시간이 매우 길어질 수 있다는 부작용 (= 호위 효과) 최단 작업 우선 스케줄링 SJF, Shortest Job First 스케줄링 호위 효과를 방지하기 위해 CPU 사용 시간이 긴 프로세스는 나중에 실행하고 CPU 사용 시간이 짧은 프로세스는 먼저 실행 라운드 로빈 스케줄링 RP, Round Robin 스케줄링 선입 선처리 스케줄링 + 타임 슬라이스(time slice) 타임 슬라이스: 각 프로세스가 CPU를 사용할 수 있는 정해진 시간 정해진 타임 슬라이스만큼의 시간 동안 돌아가며 CP..

CS/[혼자 공부하는] 운영체제

3-1] CPU 스케줄링: CPU 스케줄링 개요

CPU 스케줄링 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것 프로세스 우선순위 가장 공정한 CPU 스케줄링은 CPU를 원하는 프로세스들이 차례로 돌아가는 것이 아니라 빨리 처리해야 하는 프로세스 즉, 우선순위에 따라 진행하는 것이다 그리고 이러한 프로세스 우선순위는 프로세스의 PCB에 저장이 된다 ex. 입출력 작업이 많은 프로세스(= 입출력 집중 프로세스)의 우선순위는 CPU 작업이 많은 프로세스(= CPU 집중 프로세스)의 우선순위보다 높다 스케줄링 큐 운영체제가 매번 모든 프로세스의 PCB를 확인하는 것은 너무 비효율적이다 따라서 운영체제가 스케줄링 큐를 이용 대표적으로는 준비 큐와 대기 큐가 있음 준비큐와 대기 큐 프로세스 상태 다이어그램 선점형 스케줄링과 비선점형 스케..

CS/[혼자 공부하는] 운영체제

2-3] 프로세스와 스레드: 스레드

스레드(thread)의 의미 프로세스를 이루는 실행 흐름의 단위 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다 모든 스레드들은 프로세스의 자원을 공유하면서 실행이 된다 스레드의 종류 1. 실행 흐름이 하나인 프로세스 (단일 스레드 프로세스) 2. 실행 흐름이 여러 개인 프로세스 (멀티 스레드 프로세스) 프로세스를 이루는 여러 명령어 동시 실행 가능 스레드의 구성요소 스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보 멀티 프로세스 vs. 멀티 스레드 프로세스끼리는 독자적으로 실행되고 자원을 공유하지 않는다 스레드끼리는 같은 프로세스 내의 자원을 공유하며 실행된다 멀티 프로세스 프로세스를 fork 하면 코드/데이터/힙 영역 등 모든 자원이 복제되어 저장됨 저장..

CS/[혼자 공부하는] 운영체제

2-2] 프로세스와 스레드: 프로세스 상태와 계층 구조

프로세스 상태 생성 상태 준비 상태 실행 상태 대기 상태 종료 상태 생성 상태 이제 막 메모리에 적재되어 PCB를 할당받은 상태 준비가 완료되었다면 준비 상태로 준비 상태 당장이라도 CPU를 할당 받아 실행할 수 있지만 자신의 차례가 아니기에 기다리는 상태 자신의 차례가 된다면 실행 상태로 (= 디스패치) 실행 상태 CPU를 할당 받아 실행 중인 상태 할당된 시간 모두 사용 시(타이머 인터럽트 발생 시) 준비 상태로 실행 도중 입출력장치를 사용하면 입출력 작업이 끝날 때까지 대기 상태로 대기 상태 프로세스가 실행 도중 입출력장치를 사용하는 경우 입출력 작업은 CPU에 비해 느리기에 이 경우 대기 상태로 접어듦 입출력 작업이 끝나면 (입출력 완료 인터럽트를 받으면) 준비 상태로 종료 상태 프로세스가 종료된..