CS 전공/OS

[운영체제] 1. 운영체제 개요

Easyho.log 2024. 4. 15. 22:43

 운영체제 첫 게시물이다! 현재 운영체제라는 과목을 배우면서 별다른 책 없이 강의 자료로만 강의를 하고 계시는데 강의 자료로만 나와있으니 따로 정리를 해야겠다는 생각이 들었다. 심지어 중간고사도 ALL 객관식...! 따라서, 나만의 방식으로 정리를 하는데 블로그에 포스팅을 하면 좋을 것 같다는 생각에 게시물을 올린다!

짚고 가야할 부분 3가지

- 운영체제 정의와 목표에 대한 이해
- 운영체제의 발전사 훑어보기
- 운영체제의 구조

 

저 3가지를 핵심적으로 보며 포스팅을 시작한다.

1. 운영체제의 목표


 

우리가 흔히 쓰는 태블릿 PC, 노트북, 휴대전화의 전원을 켜면 메뉴 화면이나 앱 아이콘이 보인다. 전원을 켜면 가장 먼저 만나는 소프트웨어를 '운영 체제'라고 한다. 운영 체제의 특징은 다음과 같다.

 

- 운영체제는 컴퓨터가 아니다. (= 운영체제는 앞서 말했듯 SW이다!)

- 장치에 전원이 들어오면 가장 먼저 저장장치 특정 영역에서 이 소프트웨어를 실행하도록 '약속'이 되어있다.

 

그렇다면, 운영체제의 역할과 목표는 무엇일까?

역할 : 컴퓨터의 자원을 독점적으로 추상화 및 숨김하고 그것들을 '잘' 관리하는 것
목표 : 효율적이고 안정적이고 확장도 잘되면서 편리하게!

이 4가지의 목표를 가지고 컴퓨터의 자원을 독점적으로 관리한다. 만약에 운영체제가 없다면... 아마 컴퓨터 사용에 많이 불편했겠지요..! 가장 불편한 점은 하드웨어 장치 연결이나 소프트웨어 설치가 불가능하고 장애에 대한 대응도 어렵다.


2. 운영체제의 역사


1.  고정 프로그래밍 시대

고정 프로그래밍?

 

이 때는 운영체제에 대한 개념이 사실 없었다. 프로그래밍이라고 할 것도 없고... 하나의 기계가 하나의 역할밖에 못하기 때문에 다른 역할을 하기 위해서는 그냥 다른 기계를 하나 더 가져다가 사용하는 수밖에는 없다. 이 말은 즉,

 

새로운 기능을 구축하는데 굉장히 어렵고 오래걸린다는 말이다..!

 

따라서, 운영체제의 기능을 하기 어렵다는 말이다.

 

2. 일괄 작업 시스템

일괄 작업 시스템은 내장 프로그래밍 방식이다.

내장 프로그래밍?

 

천공카드 리더를 입력장치로 라인 프린터를 출력 장치로 사용한다. 천공 카드에 구멍을 뚫어 프로그램에 작성하고, 카드 리더기에 이를 읽어서 메모리에 적재한다. 여기서 로직을 메모리에 담고 CPU가 프로그램을 처리하는 방식에서 폰 노이만 구조를 보인다! 여기서 운영체제 역할을 해주는 뭔가가 등장했다!

 

하지만, 단점이 있다. 작업을 한 번에 하나씩만 처리가 가능했다. 중간에 입력값을 제어하거나 결과를 확인하는 것이 불가능했다는 것이다. 그리고 작업을 교체하고 읽어들이는데 긴 시간이 걸린다.

 

3. 대화형 시스템

대화형 시스템에서 모니터와 키보드가 등장했다. 키보드로 입력을 주어 모니터로 출력하는 것에 대해 대화형 시스템이라고 한다. 모니터와 키보드의 등장으로 입력값에 따라 작업의 흐름을 중간에 개입하여 바꾸는 것이 가능해졌다! 덕분에 다양한 응용 프로그램을 만들 수 있게 되었다. 하지만, 이로 인해 하나의 장치에서 여러 작업이 동시에 이루어져야 한다..! 그렇다면 어떻게 할까? 바로 다중 프로그래밍 방식이 있다.

 

다중 프로그래밍?

시분할 시스템!

 

하나의 CPU로 여러 작업을 동시에 실행하는 기술이다. 사실 동시에 실행되기 보다는 동시에 실행되는 것처럼 보인다는 것이다.

각 작업 당 CPU 사용시간을 분할하여 (시분할) 여러 작업이 동시에 실행되는 것처럼 보이게 한다.

이는 CPU 대기 시간이 줄어듦으로써 활용률과 처리율이 증가한다! 더 많은 작업을 처리할 수 있다는 것이다!

 

다중 프로그래밍 방식의 원리는 CPU 작업 도중 I/O 작업이 들어오면 대기 하고 다른 프로그램이 끝나면 그 때 다시 실행한다. 이렇게 하면 CPU가 노는 시간이 줄어들어 더 많은 작업을 처리할 수 있게 된다. 배치 프로세싱 방식보다 더 효율적이다! 그렇다면, 제어하는 방식에 대해 의문점이 생긴다.

 

어떤 작업을 언제 처리하지? -> 프로세스 관리
한정된 메모리에 어떤 작업을 올리지? -> 메모리 관리
그럼 작업들은 어디에 보관하지? -> 파일 시스템 관리

 

다중 프로그래밍 방식으로 도입되면서 다음과 같은 기능이 추가가 되었다! (프로세스 관리, 메모리 관리, 파일 시스템 관리)

 

4. 네트워크 기반 시스템

시대가 발전하며 네트워크가 등장했다! 이는 자원이 장치 내부에서 밖까지 연결되어 있다는 것이다. 예전에는 정말 획기적이였지만 지금은 없으면 굉장히 불편한 정보 전송 기술이 발전했다. 네트워크는 사실 필수이다. 그렇다면 장치 외부까지 관리하려면..? 다음과 같은 기능이 요구된다.

네트워크를 지원하기 위한 장치 및 프로토콜들의 지원, 리소스 제어 -> 네트워크 관리
외부 사용자들을 함부로 믿어선 안된다. -> 보안 관리

 

이로써 운영체제의 역사는 끝이 났다! 이렇게 운영체제 역사를 보면서 추가된 운영체제의 기능이 있는데 이를 정리해 보았다.

 

일괄 작업 시스템 1. 장치 관리
대화형 시스템 2. 프로세스 관리
3. 메모리 관리
4. 파일 시스템 관리
네트워크 기반 시스템 5. 네트워크 관리
6. 보안 관리
7. 기타관리

 

5. 기타 시스템

1) P2P 시스템 : 특정 서버의 과부하를 막기 위한 시스템

2) 가상화 시스템 : O.S나 하드웨어를 추상화 해주는 존재

3) 모바일 운영체제 : 휴대폰, 태블릿 PC를 위한 운영체제

4) 임베디드 운영체제 : 임베디드 컴퓨터용 운영체제

5) 실시간 운영체제


 

3. 운영체제의 구조


1. 운영체제의 구조

1) 커널

: 운영체제의 핵심이라고 볼 수 있다. 여기서 운영체제의 핵심적인 기능을 수행한다.

사실 운영체제가 하는 일이 커널에서 하는 일과 같다고 볼 수 있다. 따라서, 굉장히 중요하기 때문에 외부로부터 격리되어 있다.

 

2) 인터페이스

: 커널에 명령을 전달하고 실행 결과를 알려주는 역할 (커널과 응용 프로그램과의 소통)

 

3) Device Driver

: 커널과 하드웨어의 소통을 위한 수단

컴퓨터 시스템의 구조

4) SysCall : 커널이 자신의 기능을 함수 형태로 제공해주는 것이다. 사용자가 커널 레벨에 도달할 수 있는 것이다.

 

2. Virtual Machine

가상 머신이란 운영체제와 응용 프로그램 사이에서 작동하는 것으로 운영체제 간 이식성을 높여준다. 하나의 프로그램에서 여러 환경을 지원한다는 것에 장점이 있다!


-끝!-

이렇게 운영체제의 개요에 대해 알아보았다. 운영체제를 배워보니 왜 3학년 1학기 전공 중 가장 어려운 과목이라고 하셨는지 알 것 같다... 외울 내용이 너무 많아... 포스팅하면서 정리해야겠다!

'CS 전공 > OS' 카테고리의 다른 글

[운영체제] 6. 스케줄링  (2) 2024.04.21
[운영체제] 5. 쓰레드  (1) 2024.04.20
[운영체제] 4. 프로세스 (2)  (2) 2024.04.18
[운영체제] 3. 프로세스 (1)  (0) 2024.04.18
[운영체제] 2. 컴퓨터 아키텍쳐와 운영체제  (0) 2024.04.16