운영체제

1. 운영체제와 컴퓨터

ggomjiu 2025. 1. 14. 10:40

운영체제(OS, Operating System)

: 컴퓨터 시스템의 핵심 소프트웨어로, 사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어

- Windows, Linux, Mac OSX 등이 있음

- 컴퓨터의 성능을 높이고 사용자에게 편의선을 제공을 목적으로 하는 컴퓨터 하드웨어를 관리하는 프로그램

 

운영체제의 역할

1. CPU 스케줄링 & 프로세스 관리

- CPU 소유권을 어떤 프로세스에 할당할지

- 프로세스의 생성과 삭제

- 자원 할당 및 반환을 관리

 

2. 메모리 관리

- 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지를 관리

 

3. 디스크 파일 관리

- 디스크 파일을 어떠한 방법으로 보관할지를 관리

-> 파일 생성, 수정, 제거, 공유, 백업, 복구, 주기억장치와 보조기억장치 간의 파일 전송 등

 

4. I/O 디바이스 관리

- I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고 받는 것을 관리

 


 

cf) CPU 스케줄링 알고리즘

1. 선입 선처리 스케줄링 (FCFS)

- CPU를 먼저 요청하는 프로세스가 CPU를 먼저 할당 받음

- 선입선출 Queue로 쉽게 관리 가능

1) 비선점형 스케줄링

- 일단 CPU가 한 프로세스에 할당되면, 그 프로세스가 종료 또는 I/O 처리를 위해 CPU를 방출할 때까지 CPU를 점유

 

2) 호위 효과

: 다른 프로세스들이 하나의 긴 프로세스가 CPU를 놓기를 기다리는 것

- 선입 선처리 스케줄링에서는 호위 효과가 발생

- 결론적으로 낮은 CPU와 장치 사용률을 보임

 

3) 문제

- 한 프로세스가 지나치게 오랫동안 CPU를 점유하는 것이 허용되기 때문에 큰 손해가 발생

 

2. 최단 작업 우선 스케줄링 (SJF)

- 각 프로세스의 next CPU burst 길이를 고려한 알고리즘

- CPU가 이용 가능해지면, 가장 작은 next CPU burst를 가진 프로세스에 CPU를 할당

- 두 프로세스가 동일한 길이의 next CPU burst를 가지면, 선입 선처리 스케줄링을 적용

1) 최적의 알고리즘

- SJF 스케줄링 알고리즘은 주어진 프로세스 집합에 대해 최소의 평균 대기 시간을 가짐

 

2) 문제

- 실행하기 전 next CPU burst의 길이를 완벽하게 예측하기 어려움

 

3) next CPU burst 예측

- 한계를 극복하고자 next CPU burst를 예측

- next CPU burst 길이의 근삿값을 계산

- 지수 평균한 것으로 근삿값을 계산

 

4) 최소 잔여 시간 우선 (STCF)

- 선점형 SJF

- 만약 새로운 프로세스가 현재 실행되고 있는 프로세스의 남은 시간보다도 더 짧은 CPU burst를 가지고 있다면 Context Switching이 발생

 

3. 라운드 로빈 스케줄링 (RR)

- 시간 할당량(time quantum) 또는 타임 슬라이스(time sclice)라고 하는 작은 단위의 시간을 정의

- CPU 스케줄러는 준비 큐를 돌면서 한 프로세스에 한 번의 시간 할달량 동안 CPU를 할당

1) 실행 두 가지 경우

- 첫 번째, 프로세스의 CPU burst가 한 번의 시간 할당량보다 작은 경우

  • 프로세스 자신이 cpu를 자발적으로 방출할 것
  • 스케줄러는 그 후 준비 큐에 있는 다음 프로세스를 진행

- 두 번째, 현재 실행 중인 프로세스의 CPU burst가 한 번의 시간 할당량보다 긴 경우

  • 시간 할당량 이후에 interrupt발생
  • Context Switching이 일어나고 실행하던 프로세스는 다시 준비 큐에 넣어짐
  • 그 후, 스케줄러는 준비 큐의 다음 프로세스를 선택

2) 선점형

- CPU burst가 한 번의 시간 할당량을 초과하면, 프로세스는 선점되고 준비 큐로 되돌아감 -> 그러므로 선점형

 

3) RR 알고리즘 성능

- 시간 할당량의 크기에 매우 많은 영향을 받음

- 시간 할당량이 매우 크면, RR 알고리즘의 경우 선입 선처리 정책(FCFS)과 비슷해짐

  • 한 프로세스가 지나치게 오랫동안 CPU를 점유하게 됨

- 시간 할당량이 매우 적다면 RR 알고리즘은 매우 많은 Context Switching을 야기함

 

4) 시간 할당량(Time Quantum)과 문맥 교환 시간(Context Switch Time)

- 시간 할당량은 Context Switch Time보다 커야 함 -> 그렇지 않으면 문맥 교환 오버헤드로 인해 성능이 크게 저하

- 만약 Context Switch Time이 시간 할당량의 10%라면, CPU 시간의 약 10%가 Context Switch에 소비되는 것

- 현대 운영체제의 시간 할당량은 10 ~ 100ms -> Context Switch 시간은 10ms

 

5) 총 처리 시간(turnaround time)

- 총 처리 시간 또한 시간 할당량의 크기에 좌우됨

- 한 프로세스 집합의 평균 총 처리 시간은 시간 할당량의 크기가 증가하더라도 반드시 개선되는 건 아님

 

4. 우선순위 스케줄링(Priority Scheduling)

- CPU는 가장 높은 우선순위를 가진 프로세스에 할당

- 우선순위가 같은 프로세스들은 선입 선처리(FCFS) 순서로 스케줄됨

- SJF은 일반적인 우선순위 스케줄링 알고리즘의 특별한 경우임 -> 짧은 실행시간을 우선순위로 가진 경우

1) 선점형과 비선점형

- 선점형은 새로 도착한 프로세스의 우선순위가 현재 실행되는 프로세스의 우선순위보다 높다면 Context Switching이 발생

- 비선점형은 준비 완료 Queue에 새로운 프로세스를 넣음

 

2) 문제 

- 기아 상태(Starvation) 또는 무한 봉쇄(Indefinite Blocking)

  • 우선순위 스케줄링 알고리즘을 사용할 경우 낮은 우선순위 프로세스들이 CPU를 무한히 대기하는 경우가 발생

3) 해결

- 노화(Aging)

  • 오랫동안 시스템에서 대기하는 프로세스들의 우선순위를 점진적으로 증가시킴

4) 우선순위 + 라운드 로빈 알고리즘(Priority with RR Scheduling)

- 우선순위가 가장 높은 프로세스를 실행하고 우선순위가 같은 프로세스들은 라운드 로빈 스케줄링을 사용하여 스케줄하는 방식

 

5. 다단계 큐 스케줄링(Multilevel Queue Scheduling)

- 우선순위마다 별도의 Queue를 가짐

- 우선순위가 가장 높은 큐에서 프로세스를 스케줄함

- 프로세스들이 시스템 진입 시에 영구적으로 하나의 큐에 할당

  • 이 때문에 기아(starvation) 상태가 발생할 수 있음

- 준비 큐를 foreground와 background 큐로 나눌 수 있음

  • foreground(interactive)
  • background(batch)
  • EX) 백그라운드 큐는 FCFS 알고리즘에 의해 스케줄 되는 반면, 포그라운드 큐는 RR 알고리즘에 의해 스케줄 될 수 있음

EXAMPLE

- 4개의 큐를 가진 다단계 큐 스케줄링 알고리즘

- 각 큐는 낮은 우선순위의 큐보다 절대적인 우선순위를 가짐

  • 예를 들어, 배치 프로세스가 실행되고 있는데, 대화형 프로세스가 준비 큐에 들어가면 배치 프로세스는 선점될 것임

- Foreground, Background 큐는 CPU 시간의 일정량을 받아서 자기 큐에 있는 다양한 프로세스들을 스케줄함

  • 예를 들어, 포그라운드 큐는 RR 스케줄링을 위해 CPU 시간의 80%가 주어지고, 백그라운드 큐는 CPU 시간의 20%를 받아서 사용함

 

6. 다단계 피드백 큐 스케줄링(Multilevel Feedback Queue Scheduling)

- 프로세스가 큐들 사이를 이동하는 것을 허용

1) 다단계 피드백 큐 스케줄링의 동작

- 새로운 프로세스는 모두 첫 번째 큐에 들어감 -> 그 후, 라운드 로빈(RR)알고리즘으로 동작

- 시간 할당량(time quantum) 안에 끝내지 못하면 낮은 우선순위 큐로 넘어감

- 낮은 우선순위 큐는 FCFS 알고리즘으로 동작하게 되는데 이때, 너무 오래 대기하는 프로세스는 높은 우선순위 큐로 이동할 수 있음 -> 노화(Aging)를 이용해서 기아(starvation) 상태를 예방

 

2)매개변수

- 큐의 개수

- 각 큐를 위한 스케줄링 알고리즘

- 한 프로세스를 높은 우선순위 큐로 올려주는 시기를 결정하는 방법

- 한 프로세스를 낮은 우선순위 큐로 강등시키는 시기를 결정하는 방법

- 프로세스가 서비스를 필요로 할 떄 프로세스가 큐를 결정하는 방법

 


 

운영체제 구조

- 보라색 부분이 운영체제
- GUI가 없고 CUI만 있는 리눅스 버전도 있음

시스템 콜

- 운영체제가 커널에 접근하기 위한 인터페이스

- 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용

- 유저 프로그램이 I/O 요청으로 트랩을 발동하면 올바른 I/O 요청인지 확인한 후 유저 모드가 시스템 콜을 통해 커널 모드로 변환되어 실행됨

- 이 과정을 통해 컴퓨터 자원에 대한 직접 접근을 차단할 수 있음 -> 프로그램을 다른 프로그램으로 부터 보호할 수 있음

- 시스템 콜은 하나의 추사화 계층이기 때문에 이를 통해 네트워크 통신이나 데이터베이스와 같은 낮은 단계의 영역 처리에 대한 부분을 많이 신경쓰지 않고 프로그램을 구현할 수 있는 장점이 있음

 


 

cf)

I/O 요청

: 입출력 함수, 데이터베이스, 네트워크, 파일 접근 등에 관한 일

드라이버

: 하드웨어를 제어하기 위한 소프트웨어

 


 

Modebit

- 0 또는 1의 값을 가지는 플래그 -> 유저 모드와 커널 모드를 구분하는 데 사용

- I/0 디바이스의 경우 유저 모드를 기반으로 작동할 경우 공격자의 공격 대상이 되기 쉬움

- 커널 모드를 통해 작동한다고 해도 100% 막을 수는 없지만, 운영체제를 통해 작동하게 해야 막기 수움

- 0 : 커널 모드

  • 커널 모드 : 모든 컴퓨터 자원에 접근할 수 있는 모드

- 1 : 유저 모드

  • 유저 모드 : 유저가 접근할 수 있는 영역을 제한적으로 두며 컴퓨터 자원에 함부러 침범하지 못하는 모드

- 커널 

  • 운영체제의 핵심 부분
  • 시스템콜 인터페이스를 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/0 디바이스, I/0 요청 관리 등 운영체제의 중추적인 역할을 함

 

컴퓨터의 요소

CPU

- 산술논리연산장치, 제어장치, 레지스터로 구성되어 있는 장치

- 프로그램의 명령어를 해석하고 실행하는 역할을 하는 컴퓨터 시스템의 중심이 되는 핵심 요소

 

제어장치

 

- 프로세스 조작을 지시하는 CPU의 한 부품

- I/O 장치 간 통신을 제어

- 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정

 

레지스터

- CPU 안에 있는 임시 기억 장치

- CPU와 직접 연결이 되어 있어 연산 속도가 메모리보다 빠름

- CPU는 자체적으로 데이터를 저장할 방법이 없기 때문에 레지스터를 거쳐 데이터를 전달

- SSD or HDD -> RAM(MAIN MEMORY) -> CACHE -> REGISTER(CPU)

- REGISTER에 있을 경우 HIT, 없으면 하위 부품에서 찾아옴

 


 

cf) CACHE vs BUFFER cs REGISTER

1. CACHE

- CPU와 MAIN MEMORY 사이에서 속도 차이에 따른 병목 현상을 줄이기 위한 범용 메모리

- 어떤 시스템 내에서 데이터의 집중적인 사용으로 인해 전체 시스템에 절대적인 영향을 미치는 부분의 사용 빈도가 늘어나 그 부분의 성능이 저하되어 전테 시스템이 마비되는 현상을 줄이기 위한 것

- 자주 사용하는 데이터나 값을 복사해 놓는 임시 저장소

- 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용

- 저장 공간이 작고 비용이 비싸지만 빠른 성능을 제공

- CPU에 가까울 수록 캐시는 작고 비싸고 빠름

- 프로그램에 직접적으로 읽거나 쓸 수 없음

- 메모리에 있는 데이터를 임시로 가져온 것

- 지역성

  • 공간적 지역성 : CPU가 요청한 주소 지점에 인접한 데이터들이 앞으로 참조될 가능성이 높은 현상
  • 시간적 지역성 : 최근 사용된 데이터, 변수가 재사용될 가능성이 높은 현상
  • 순차적 지역성 : 데이터가 기억 장치에 저장된 순서 대로 인출되고 실행될 가능성이 높은 현상
  • 보통 명령어는 공간적 지역성이 높고, 데이터는 시간적 지역성이 높음

- 캐시에 있는 데이터가 변경되었을 때

1) 즉시 쓰기

  • : 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 방식
  • 단점 : 메모리와의 빈번한 데이터 전송으로 인해 성능이 느려짐
  • 장점 : 메모리의 최신값이 항상 유지됨

2) 지연 쓰기

  • 변경된 내용을 모아서 주기적으로 반영하는 방식
  • 단점 : 메모리와 캐시된 데이터 사시의 불일치가 발생할 수도 있음
  • 장점 : 메모리와의 데이터 전송 횟수가 줄어들어 시스템의 성능을 향상시킬 수 있음

 

2. BUFFER

- 데이터를 한 곳에서 다른 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리 영역 -> 사용 후에 데이터를 폐기

- 처리하는 데 필요한 리소스 크기가 큰 편

- 버퍼링 : 버퍼를 활용하는 방식 or 버퍼를 채우는 동작

CACHE vs BUFFER

- 캐시는 처리 속도를 최대한 올리기 위한 기술로 주로 빠른 속도의 장치를 보조

- 버퍼는 처리 속도가 떨어지는 걸 방지하는 기술로 주로 느린 속도의 장치를 보호

 

3. REGISTER

- CPU가 요청을 처리할 때 쓰는 임시 저장 공간

- 공간은 작고 가격은 비싸지만 CPU에 직접 연결되어 있어 연산 속도가 매우 빠름

 


 

산술논리연산장치 (ALU)

- 덧셈, 뺄셈 같은 두 숫자의 산술 연산과 배타적 논리합, 논리곱 같은 논리 연산을 계산하는 디지털 회로

- CPU의 연산 처리

  1. 제어장치가 메모리에서 레지스터로 계산할 값을 로드
  2. 제어장치가 레지스터에 있는 값을 계산 하라고 산술논리연산장치에 명령
  3. 제어장치가 계산된 값을 다시 레지스터에서 메모리로 계산한 값을 저장

 

인터럽트

- 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것을 말함

- I/O 디바이스로 인한, 0으로 숫자를 나누는 산술 연산에서의, 프로세스 오류 등으로 인터럽트 발생

- 인터럽트가 발생되면 인터럽트 핸들러 함수가 모여있는 인터럽트 백터로 가서 인터럽트 핸들러 함수 발행

- 과정

  1. 기존의 작업을 처리하던 도중 인터럽트 발생
  2. 현재 컴퓨터가 처리하는 일을 중지하고 현재의 컴퓨터 상태를 저장
  3. 해당 인터럽트를 처리해주기 위한 인터럽트 서비스 루틴 처리
  4. 인터럽트 처리 이후 저장되었던 이전 작업의 생태를 복구하고 이전 작업 수행 재개

1) 하드웨어 인터럽트

- CPU 외부의 디스크 컨트롤러나 주변 장치로부터 요구되는 것 -> 운영체제의 처리를 요하는 상황을 알리기 위해 전기적인 신호를 사용해 구현

- 발생하는 예

  • 기계 검사 인터럽트 : 프로그램을 실행하는 도중 갑작스런 정전이나 컴퓨터 자체 내에서 기계적인 문제가 발생한 경우
  • 외부 인터럽트 : 오퍼레이터나 타이머에 의해 의도적으로 프로그램이 중단된 경우
  • 입출력 인터럽트 : 입출력의 종료나 입출력의 오류에 의해 CPU의 기능이 요청된 경우
  • 프로그램 검사 인터럽트 : 프로그램 실행 중 보호된 기억 공간 내에 접근하거나 불법적인 명령 수행과 같은 프로그램의무 문제가 발생한 경우

 

2) 소프트웨어 인터럽트

- 외부가 아닌 CPU 내부에서 자신이 실행한 명령이나 CPU의 명령 실행에 관련된 모듈이 변화하는 경우 발생

- 프로그램 실행 중 프로그램 상의 처리 불가능한 오류나 이벤트를 알리기 위한 경우 발생 -> 트랩(TRAP) or 예외(EXCEPTION) 이라고 부름

- 프로그램 내에서 특별한 서비스를 요구하거나 감시를 목적으로 의도적으로 프로그램이 발생시킨 특별한 명령어에 의해 발생되기도 함

- 발생하는 예

  • 존재하지 않는 메모리 주소에 접근
  • 나눗셈에서 0으로 나누고자 하는 경우

 

DMA 컨트롤러(Direct Memory Access Controller)

- I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치

- CPU에먼 너무 많은 인터럽트 요청이 들어오기 때문에 CPU 부하를 막아주면서 CPU의 일을 부담

 

메모리

- 전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치

- RAM

 

타이머

- 몇 초 안에는 작업이 끝나야 한다는 것을 정하고 특정 프로그램에 시간을 제한함

- 시간이 많이 걸리는 프로그램이 작동할 때 제한을 걸기 위해 존재

 

디바이스 컨트롤러

- 컴퓨터와 연결되어 있는 I/O 디바이스들의 작은 CPU

'운영체제' 카테고리의 다른 글

추가적인 내용  (0) 2025.01.19
5. 인터럽트(Interrupt)  (0) 2025.01.16
4. CPU 스케줄링 알고리즘  (0) 2025.01.16
3. 프로세스와 스레드  (0) 2025.01.16
2. 메모리 계층  (0) 2025.01.16