본문 바로가기

카테고리 없음

OS_1

운영체제의 기본구조 

몇 가지 개념들

 

1. 레지스터 / CPU 캐시

 

● 레지스터 - CPU 내부에서 연산에 사용하는 데이터를 저장하는 메모리

 

CPU 캐시 - 메인 메모리 접근을 빠르게 하기 위해 CPU 내부나 바로 옆에 탑재하는 작은 메모리 (메인 메모리의 입출력 병목현상 해소)

 

2. 프로그램 / 프로세스 / 스레드

 

프로그램 - 컴퓨터에서 특정 작업을 수행하는 일련의 명령어들의 모음

 

● 프로세스 - 연속적으로 실행되고 있는 프로그램 (실행을 위해 시스템(커널)에 등록된 작업)

 

스레드 - 프로세스 내에서 실행되는 흐름의 단위

 

3. 동시성 / 병렬성

 

● 동시성 - 여러 개의 작업을 빠르게 바꿔가며 하나씩 수행하는 것 (논리적 개념)

 

● 병렬성 - 여러 개의 작업을 동시에 수행하는 것 (물리적 개념)

 

4. (선점형 OS) 우선순위 스케줄링 알고리즘 / (선점형 OS) 라운드 로빈 스케줄링 알고리즘

 

● 우선순위 스케줄링 알고리즘 - 각각의 프로세스마다 우선순위를 부여해서 우선순위가 높은 프로세스를 실행

 

● 라운드 로빈 스케줄링 알고리즘 - 같은 우선순위의 프로세스들간의 형평성을 위해 실행의 최소 단위 시간 간격 설정

 

5. 기아(starvation) 현상 / 에이징(Aging) 기법

 

기아(starvation) 현상 - 낮은 우선순위의 프로세스가 실행되지 않는 현상 (입출력시간때문에 자주 나타나지는 않음)

 

에이징(Aging) 기법 - 자원 할당을 오래 기다린 프로세스에게 기다린 시간에 비례하여 높은 우선순위를 부여하는 것

 

5. 멀티프로그래밍 / 멀티태스킹 / 멀티프로세싱 / 멀티스레딩

 

멀티프로그래밍 - CPU 작업과 입출력 작업을 병행하는 것

 

● 멀티태스킹 - OS의 스케줄링에 의해 task(프로세스보다 확장된 개념)를 번갈아가며 수행하는 것

 

● 멀티프로세싱 - 여러 개의 프로세서(프로세스X)가 서로 협력적으로 일을 처리하는 것

 

● 멀티스레딩 - 하나의 프로세스의 여러 개의 스레드를 동시 / 병렬 수행하는 것

 

헷갈리는 것들

 

1. 프로그램 하나에서 두 코드가 동시 / 병렬 실행 -> 멀티스레딩

2. 프로그램 두개가 동시 실행 -> 멀티태스킹

3. 하나 이상의 프로세스를 여러 프로세서가 병렬 처리 -> 멀티프로세싱

---> 멀티태스킹은 프로세스들을 처리하는 것

---> 멀티스레딩과 멀티프로세싱은 프로세스를 어떤 방식으로 처리하는지에 대한 것

4. 멀티스레딩과 멀티프로세싱의 차이 : 멀티스레딩은 한 프로세스의 스레드를 나누어 처리하는 것이고 멀티프로세싱은 한 개 이상의 프로세스를 여러 CPU 에서 처리하는 것 (서로 장단점이 있으며 메모리 공유 방식에 차이가 있다)

5. 멀티프로그래밍과 멀티태스킹의 차이 : 멀티프로그래밍은 자원낭비를 막는 것이고 멀티태스킹은 여러 프로그램을 수행하기 위한 것