본문 바로가기
5학기/운영체제

Ch01. OS? Oh Yes!

by sshnnne 2023. 3. 10.

1.1 OS?

1) 운영체제란?

: 컴퓨터의 여러 응용 프로그램을 설치되게 해주고, 여러 장치를 효율적으로 작동하도록 하며, 사용자가 컴퓨터를 손쉽게 이용할 수 있도록 해주는 프로그램의 집단.

 

2) 운영체제 vs 시스템 프로그램

시스템 소프트웨어 : 운영체제 + 시스템 프로그램

- 컴퓨터 기종에 따라 다름 ( = 컴퓨터 하드웨어에 의존적 )

응용 소프트웨어 : 응용 프로그램 집단

- 기종에 관계 없이 작성될 수 있음

 

1.2 옛날에 운영체제는?

1.2.2.1 1세대 운영체제 (1940s ~ 1950s)

- 진공관 컴퓨터의 시기

- 세계 최초의 컴퓨터 ENIAC 등장

- 일괄처리 시스템 등장 (Single-stream Batch Processing Systems)

 

1) 일괄처리란?

: 다수 개의 프로그램을 읽어 저장하되, 한 번에 한 개씩의 프로그램을 실행하는 방식.

은행에서 지폐를 셀 때 사용하는 기계와 유사.

 

- 왜 여러 개의 프로그램을 같이 읽어 저장할까?

: 처리해야 할 작업들을 여러 개 준비해놓고 (single-stream) 다음 작업의 처리를 자연스럽게 연결되도록 하면 job-to-job의 transition을 smooth하게 할 수 있음.

 

2) Batch

- 초창기의 batch : 작업이 차례대로 한 개씩 처리됨. (= 한 개의 작업이 시작되면 그 일이 완전히 끝날 때까지 다른 작업은 기다려야 한다.) 

- 이후의 batch : 일괄처리를 하되 다중 프로그래밍을 하는 batch로 발전. 작업이 끝날 때까지 사용자의 중간 개입이 허용되어 있지 않음.

- 작업이 실시간으로 처리되는 것이 아니라 일괄적으로 한꺼번에 처리하는 것.

 

1.2.2.2 2세대 운영체제 (1960s 전반기)

- 트랜지스터 컴퓨터

- assembly 언어, FORTRAN, COBOL의 등장

 

1) 다중 프로그래밍 시스템 (Multiprogramming System)

: 다수 개의 작업이 함께 주기억 장치에 있도록 하는 방식

: 처리량의 극대화

: 한 대의 컴퓨터로 여러 프로그램들을 실행

 

2) 다중처리 시스템 (Multiprocessing System)

: 여러 개의 처리 장치(CPU)를 장착하여 동시에 여러 작업을 병렬로 실행하여 처리 속도를 최대한 높이는 방식.

다중처리는 여러 작업이 동시에 실행됨 -> 실행을 위해서는 주기억 장치에 위치해야 함 -> 다중 처리를 위해서 다중 프로그래밍은 필수적임

 

3) 시분할 시스템

: CPU가 처리해줄 수 있는 시간을 작업 수에 맞춰 분할하여 일정량만큼 분배하여 번갈아가며 처리하는 것.

: 효과적인 시분할 시스템의 운영을 위해서는 다중 프로그래밍이 필요함.

: 응답시간의 최소화

 

4) 대화식 시스템

: 시스템과 사용자가 모니터와 입력 장치를 통해 대화하듯이 일을 처리하는 방식

 

1.2.2.3 3세대 운영체제 (1960s 후반기 ~ 1970s)

- 집적회로(Integrated Circuit, IC)가 개발되어 트랜지스터를 대체.

- 다중모드 시분할 시스템, 근거리 통신망(LAN), 소프트웨어 공학, 컴퓨터 보안 등 등장

- UNIX 운영체제 출현 -> 오픈 소스코드로 인해 운영체제를 개발하는 활발한 연구가 진행됨

 

1) 다중모드(Multimode) 시분할 시스템

: 일괄처리와 시분할, 실시간 작업을 모두 지원하는 시스템

 

1.2.2.4 4세대 운영체제 (1970s 후반기 ~ 현재)

- 컴퓨터 사용의 범용화, 입출력 장치의 다양화, 저장 장치의 대용량화, 데이터 통신의 발전 및 정보산업의 출현, 마이크로프로세서의 등장

 

1.3 Oh Yes!

1.3.1 OS 안에는 어떤 것들이?

1) 쉘(Shell)

: 사용자나 응용 프로그램이 운영체제와의 의사소통 (정보 교환 or 운영체제로의 요청 창구) 을 위해 필요한 사용자 인터페이스.

(ex. 그래픽 사용자 인터페이스의 도움을 받아 아이콘을 클릭함으로써 프로그램을 실행시킴)

 

⬇️ 자원의 관리를 위해 필요한 요소들

1.1) 장치 관리

: 시스템에 있는 주변 장치(키보드, 모니터 등)을 제어

1.2) 파일 관리

: 파일의 생성, 수정, 삭제 등을 관리

1.3) 메모리 관리

: 주기억 장치의 관리. 프로그램 실행을 위해 주기억 장치의 일정 부분을 할당 / 주기억 장치 내 프로그램들의 경계를 설정하여 서로 침범하지 못하게 함

1.4) 처리기 관리

: CPU의 처리 능력을 각 작업에 효과적으로 배분토록 하는 것

 

1.3.1 OS는 컴퓨터의 어디에 있을까?

1) 커널

: 운영체제의 각종 기능들 중 사용자와 실행 프로그램을 위해 빈번하게 사용되는 부분

: 처음 부팅될 때 주기억 장치에 적재되어 시스템 운영이 종료될 때까지 계속해서 주기억 장치에 남아 있게 되는 부분

: 운영 체제의 핵심 (핵, 관리자, 메모리 상주 프로그램)

- 커널을 왜 주기억 장치에 상주시킬까?

: 빈번하고 빠르게 실행되어야 할 프로그램을 디스크에 두었을 경우 많은 시간을 요구하게 되어 시스템의 성능이 매우 떨어지기 때문.

 

2) 유틸리티 프로그램

: 운영체제 프로그램 중 자주 사용되지 않은 것은 디스크에 두고 필요할 때마다 주기억 장치로 넣어 실행 후 다시 디스크로 보냄으로써 사용자 프로그램을 위한 주기억 장치 공간을 확보하게 됨.

: 사용자 인터페이스의 대부분이 유틸리티에 속하게 됨

: 커널과 유틸리티를 구분 짓는 명확한 잣대는 없음.

 

3) 펌웨어

: 생긴 건 하드웨어고 내부적으로는 프로그램인 형태

: 커널 중에서도 더 빠른 실행이 요구되거나 높은 수준의 보호가 필요한 프로그램들을 마이크로 프로그래밍을 하여 ROM or PLA와 같은 칩의 형태로 만드는 것.

 

1.3.3. 윈도에서는?

1) 듀얼 모드(Dual Mode)

: 유저 모드와 커널 모드로 구성.

: 사용자와 운영체제 프로그램 간에 설정된 영역은 보호되어야 한다. 

: 시스템의 장치들이나 설정값들을 사용자가 마음대로 변경하지 못하게 하기 위해 이러한 권한은 커널 모드로 실행되는 프로그램만이 가지도록 하였다.

: 유저 모드로 실행 중인데 커널 모드에서 해야할 일이 생기면 '시스템 호출(System Call)을 하게 됨 -> 그 일을 실행할 프로그램이 커널 모드에서 실행 -> 다시 사용자 프로그램으로 복귀

 

1.1) 유저 모드 (User Mode)

- Environment subsystem

: 운영체제에서 만들어진 응용 프로그램들이 윈도에서도 실행될 수 있도록 한다.

: 이뮬레이션 (Emulation) : 다른 대상을 완전히 똑같은 방법으로 하드웨어 동작까지도 수행하는 것

: 윈도에서 이뮬레이션이 가능하도록 하기 위해 API(응용 프로그램 인터페이스)와 DLL(동적 링크 라이브러리)가 사용 된다.

-Integral subsystem

ㄴ server process : 시스템의 시작과 종료 시에 필요한 일들을 실행

ㄴ system process : 로그온과 사용자 확인 등의 일을 함

 

1.2) 커널 모드 (Kernel Mode)

- Executive services

-Device drivers

: 프로그램의 입출력 요청을 실제 입출력 하드웨어에 맞는 형식으로 변환해 준다.

- Kernel

: 스레드나 프로세스의 실행 순서를 정하고 Synchronization과 Asynchronous procedure call(비동기 프로시저 호출) 및 전원과 관련된 일 등을 담당하며 excutive를 위해 기본이 되는 커널 객체를 제공.

- Hardware abstraction layer (HAL)

: Interrupt Control, I/O Interface등을 맡고 다른 하드웨어로의 이식성을 위해 Virtual Machine 인터페이스를 제공.

 

 

 

'5학기 > 운영체제' 카테고리의 다른 글

Ch 05. 병행 프로세스와 동기화  (0) 2023.04.20
Ch 04. CPU 스케줄링  (0) 2023.04.20
Ch 03. 프로세스와 스레드  (0) 2023.04.20
Ch02. 들어가기 전에  (1) 2023.03.17