본문 바로가기

전공/운영체제

[2장] 운영체제 개요

1. 운영체제(Operating system) 정의

- 시스템(System): 기반이나 틀이되는 하드웨어를 지칭. 소프트웨어인 운영체제가 시스템으로 쓰이는 것은, 하드웨어가 OS와 같이 동작이 되어야만 사용자가 쓸 수 있는 하나의 "컴퓨터 시스템"이 되기 때문임

- 하드웨어 바로 윗단에 설치되는 소프트웨어

- 컴퓨터를 동작시키기 위해 필요한 소프트웨어

- 메모리에 항상 상주하며, 전원을 켬과 동시에 실행되는 운영체제를 커널(Kernel)이라 함

- 시스템을 위한 유틸리티(copy)는 넓은 의미의 운영체제라 함

 

 

2. 운영체제 기능

- 하드웨어와 사용자 사이에 존재하므로, "하드웨어를 위한 역할"과 "사용자를 위한 역할" 두 가지로 나눌 수 있다.

1) 시스템 내의 자원을 관리(resource manager)

    - 자원 : CPU,메모리, 하드디스크(하드웨어) + 소프트웨어

2) 사용자에게 편리한 인터페이스 제공 = User와 프로그램에게 각각 독자적으로 컴퓨터를 사용하는 것 같은 환상을 제공하는 것 즉, "추상화된 컴퓨터"를 제공

   ex) 사용자는 파일 디스크의 구조에 대해 잘 알지 못하지만, interface를 통해 파일을 쉽게 저장할 수 있다.

3) 보안 및 보호 기능

   - 여러 프로그램이 하나의 컴퓨터에서 실행되면 이에 대한 보안이 필요

 

 

 

3. 운영체제의 분류

1) 동시 작업 유무( Single tasking vs Multi tasking) - "한번에 실행시킬 수 있는 프로그램의 개수"

  • Single tasking: 한 번에 하나의 프로그램만 실행시킬 수 있음. 초기 운영체제

  • Multi tasking : 한 번에 여러개 프로그램을 실행시킬 수 있음. 단, 자원을 공유해야 함

             - 시분할 시스템(Time sharing system): CPU 작업시간을 여러 프로그램이 조금씩 나누는 시스템

             - 다중 프로그래밍 시스템(Multi-programming system) : 메모리를 분할하여 동시에 여러 프로그램을 올려놓고 처리하는 시스템

             - 대화형 시스템(Interactive system) : 각 프로그램에 대한 결과를 곧바로 화면에 보여줌

    => 위 4개는 모두 "여러 프로그램이 하나의 PC에 동시에 실행"됨. 

 

   * 참고) Multi-processor system: 하나의 컴퓨터 안에 여러 CPU가 설치된 경우.

2) 다중 사용자 운영 여부

  •    단일 사용자용 운영체제 : 한 번에 한 명의 User만 사용 가능

  •   다중 사용자용 운영체제 : 한 번에 여러 사용자가 동시 접속 가능 

3) 작업 처리 방식(Batch processing vs time sharing)

  •    Batch processing(일괄 처리) : 요청된 작업을 모아 한번에 처리. 하나의 작업이 끝나기 전까지는 다른 작업을 할 수 없다는 것이 특징.응답 시간이 단점. ex) 펀치 카드 처리 시스템

  •   Time sharing system(시분할 시스템): CPU를 시간 단위로 분할해 사용하는 방식. 사용자 입장에서는 응답 시간이 짧으므로, 대화형 시스템의 특징을 가짐

4) 실시간 운영체제(Real-time system) : 정해진 시간 안에 특정 일이 반드시 처리됨을 "보장해야 하는 시스템"

  •  Hard realtime( 경성 실시간 시스템 ) : 주어진 시간을 지키지 못할 경우 시스템 실패(System Fault)초래.  ex) 로켓, 원자로 제어 시스템

  •  Soft realtime( 연성 실시간 시스템 ) : 지키지 못할 경우 실패까지는 아니지만 손해를 요구함. 즉, 가치가 떨어짐. ex) 스트리밍 시스템

 

4. 운영체제의 예

  •  Window : 개인 PC를 위한 OS 쉬운 인터페이스와 각종 기능이 있음

  • Unix : 전문적 목적의 컴퓨터 사용에 적합. 소프트웨어 이식성이 좋음

  • 참고)  소프트웨어 이식성: SW를 다른 환경으로 이동할 수 있음 

 

 

5. 운영체제의 자원 관리 방법(크게 4가지)

 1) CPU 스케줄링 - " 어떤 프로그램에 CPU를 줄 것인가?"

   - 정의 : 매 시점 어떤 프로세스에 CPU를 할당할 지 결정하는 일

   - 목표 : CPU를 가장 효율적으로 사용하면서도, 특정 프로세스가 불이익 받지 않게 함

   - 종류 : FCFS(선입 선출): 먼저 온 것을 처리. 전체 시스템 입장에서 비효율

             RR(라운드 로빈): CPU를 할당 받아 사용할 수 있는 시간이 제한됨. 큐 사용

             Priority(우선순위):  대기중인 프로세스들에 우선순위를 부여해서 우선수위 별 할당

 

2) Memory 관리 - " 한정된 메모리를 어떻게 나누어 사용할 것인가?" 

  - 왜 필요한가: OS는 메모리의 어느 부분이 어떤 프로그램에 의해 사용되는 중인지 파악해야 함(주소를 통해 관리)

-  목표: 메모리가 필요할 때 할당하고, 필요하지 않을 때 회수한다. 이를 통해 전체 메모리 공간이 효율적으로 사용되어야 한다.

- 종류:

  •   Fixed Partition(고정 분할) 

고정 분할 방식

    - 메모리를 몇 개의 분할로 미리 나누어 관리. 각 분할에 하나의 프로그램 적재

    - 분할 크기보다 큰 프로그램은 적재 불가능

    - internal fragmentation 발생( 분할 내 남는 영역 )

 

  •  Variavble partition(가변 분할) 

가변 분할 방식

  - 매 시점 프로그램 크기에 맞게 메모리를 분할해서 사용

  - 분할의 크기때문에 큰 프로그램의 실행이 제한되는 문제가 발생하지 않음( 고정 메모리 단점 개선)

  - 하지만, "물리적 메모리 크기"보다 큰 프로그램 실행 불가

  - External Fragmentation 발생(프로그램 할당은 안되었지만, 크기가 작아 프로그램을 올리지 못하는 영역)   

 

  • Virtual memory(가상 메모리) 

  - 물리적 메모리보다 더 큰 프로그램 실행 가능(고정, 가변 메모리 단점 개선)

  - 모든 프로그램은 자신만의 가상 메모리 주소를 가진다. OS는 Mapping하여 물리 주소로 변환시킨 후, 프로그램을 물리 메모리에 적재시킴

 - 프로그램의 전체 크기가 아무리 커도, 전체가 항상 동시에 사용되는 것은 아니다. 그러므로 현재 사용되고 있는 부분만 메모리에 올리고, 나머지는 보조기억장치에 저장해두었다가 필요할 때 적재하는 방식을 취한다. 즉, 가상 메모리 공간을 page 단위로 나뉘어 물리적 메모리와 swap영역에 나뉘어 저장된다. 

 - 관련 용어

  * Mapping : 가상 메모리의 주소를 물리적 메모리 주소로 변환하는 과정 

  * Swap area : 가상 메모리 관리를 위해 사용되는 디스크 영역. 즉, 한정된 메모리 공간을 여러 프로세스가 공유하기위해 비축된 디스크 영역

  * Page : 가상 메모리를 일정한 크기로 나눈 블록.

  * Paging : 가상 메모리를 page 단위로 나누는 기법

 

3) 입출력 관리 - " 각기 다른 입출력 장치와 PC간 어떻게 정보를 주고 받을 것인가?"

 - Interrupt를 통해 관리가 이루어짐.

 

 - Interrupt: 입출력 장치들이 (Controller를 통해 보내는) CPU 서비스가 필요할 때 보내는 신호. CPU는 인터럽트가 발생하면 하던 일을 멈추고, interrupt handling을 수행한다.

 

- Interrupt handling(인터럽트 처리루틴) : 인터럽트가 발생했을 때 수행해야 할 작업. 인터럽트 발생 시 OS는 해당되는 인터럽트 처리루틴을 찾아 일을 수행한다. 

 

- Controller : 주변 장치에 대한 업무를 처리하고, CPU에 인터럽트를 발생시켜 보고하는 역할(주변장치 마다 가지고 있는 작은 CPU)

 

- 처리 과정 예(키보드 입력 관리) --- 외우기 

 : User으로부터 키보드 입력이 들어옴 => Controller가 Interrupt를 CPU에 보냄 => CPU는 현재 수행중인 작업의 상태를 저장 => 운영체제 내에 정의된 키보드 인터럽트 처리 루틴을 찾아감 => 해당 처리 루틴 수행하면서 인터럽트 완료 => 인터럽트가 발생하기 직전의 상태를 복구시켜서 중단되었던 작업을 재개

 

 

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

[OS과제] SYS  (0) 2022.04.26
[운영체제,OS] 전공 필기시험 정리  (0) 2022.04.01
메모리 1 - 구조 / 종류 / 관리 / 정책 / 단편화  (0) 2022.02.23
파일 시스템  (0) 2021.12.14