전성빈의 사리사욕
[OS의 작동방식]OS의 구조와 작동방식 본문
OS(Operating System)란?
운영체제(OS : Operating System)는 컴퓨터 시스템의 각종 자원을 효율적으로 관리하고 컴퓨터 HW와 User간의 인터페이스를 담당하는 시스템 프로그램이다.
OS = kernel + System Promgrams + libraries + Utility Services(complier, shell etc)
운영체제의 목적은 사람이 컴퓨터를 편하게 이용하고 사용자 대신 HW를 효율적으로 관리하는데에 있다.
따라서 OS는 모든 어플리케이션에 대한 인터페이스를 제공하고 자원 관리자로서 CPU, RAM, I/O device 등을 관리한다.
OS의 목적
OS는 사람이 HW와 SW를 편리하게 사용하며 컴퓨터의 성능을 높여주는것이 1차적인 목적이다.
일반적으로 OS의 목적은 다음과 같이 네 가지로 나누어 볼 수 있다.
- 처리능력(Throughput)의 향상 : 일정한 단위 시간 내에 처리할 수 있는 일의 양으로 수치가 높을 수록 좋다.
- 반환시간(Turn-around time)의 최소화 : 어떠한 작업을 시작한 시간부터 끝날 때까지 걸리는 시간
- 사용 가능도(Availability)의 향상 : 시스템을 이용하고 싶을 때 언제든지 이용할 수 있는 가를 나타냅니다. 고장시 복구 시간등의 개념또한 가집니다.
- 신뢰도(Reliability)의 향상 : 시스템이 주어진 문제를 얼마나 정확하게 해결할 수 있는지를 나타냅니다.
OS의 역할
OS는 HW를 활용할 수 있게 SW나 펌웨어로 만들어져 있는 시스템 프로그램이다. OS는 컴퓨터의 능력을 사용자가 잘 활용할 수 있게 하고, 하드웨어가 높은 성능을 발휘할 수 있게 관리하는 역할을 한다. 운영체제의 역할은 다음과 같이 구분할 수 있다.
- 부팅
- 저장 매체 관리(Disk)
- UI
- 컴퓨터 자원관리
- 파일 관리
- 프로세스 관리
OS의 작동방식
멀티프로그래밍 :
컴퓨터에는 CPU와 다양한 I/O 디바이스들이 존재하는데 CPU에는 단 하나의 프로그램 밖에 올라가지 않는다. 만약 해결중이던 프로세스가 I/O 대기 상태면 CPU는 그동안 놀게 된다. 따라서 메모리에 여러 프로세스들을 올려두고 I/O대기 상태가 되면 다음 Job으로 넘어가 최대한 CPU의 대기상태를 제거 하는 방식이다.
하지만 이 방식에도 단점이 있는데 사용자가 현재 진행중인 작업에 대해 관여할 수 없다는 것이다. 더 중요한 일이 급하게 해결해야 한다 하더라도 자발적 양보에 의존하기 때문에 I/O를 하지 않는 작업이라면 기다릴 수 밖에 없다. 이 문제는 Job Scheduling으로도 해결할 수 없다.
타임 셰어링:
시간 공유방식은 멀티 프로그래밍에서 확장된 방식이다. 멀티 태스킹(Multi-tasking)이라고 부르기도 한다.
일괄 처리 시스템에서는 하나의 잡이 끝날때까지 다른 작업이 CPU를 사용할 수 없는 문제가 있다. 그래서 CPU가 스케쥴링을 통해 작업들을 빠르게 스위칭 하면서 동시에 프로그램이 작동하는 것처럼 느껴지게 한다. 멀티 태스킹을 위해 메모리에 여러 잡을 올려 놓으면 메모리가 모자라는 경우가 생길 수 있는데, 그럴 경우 스와핑을 통해 프로세스를 가상 메모리에 저장한다.
CPU의 실행 시간을 나누는 단위를 타임 슬라이스라고 한다. 일반적으로 10ms이며 모든 job은 타임 슬라이스동안 PU를 점유라고 그 시간이 끝나면 CPU를 양보한다.
인터럽트:
현대의 OS는 인터럽트 방식을 사용한다. 인터럽트란 CPU가 job을 처리하고 있을 때, I/O 디바이스 등의 장치나 예외상황이 발생하여 처리가 필요할 경우 신호를 주어 처리할 수 있도록 하는 것을 말한다. 인터럽트는 HW인터럽트, SW인터럽트 두 가지 방식으로 나뉜다.
SW interrupt
HW interrupt
'백엔드 로드맵따라가기 > OS 및 일반적인 지식' 카테고리의 다른 글
[OS의 작동방식] IPC (Inter Process Communication) (0) | 2020.08.12 |
---|---|
[OS의 작동방식] 메모리 관리 (0) | 2020.08.11 |
[OS의 작동방식] 쓰레드란 (0) | 2020.08.11 |
[OS의 작동방식] 프로세스 관리 (0) | 2020.08.06 |
[터미널의 사용방법] 커널, 쉘, 터미널 (0) | 2020.08.06 |