본문 바로가기

Computer Science/Operationg System (운영체제)

[OS] operating system이란? / history

*이 카테고리의 게시글은 경북대학교 운영체제 수업을 수강하면서 개인적인 공부 차원에서 작성하고 있습니다.

  교재 : Operating Systems Three Easy Pieces (Remzi H. Arpaci-Dusseau & Andrea C. Arpaci-Dusseau)


1️⃣ operating system이란? 

컴퓨팅 시스템을 구현하는 interface

→ 사용자는 컴퓨터 하드웨어의 복잡한 디테일을 몰라도 os를 통해 원하는 동작을 수행할 수 있게된다.

사용자에게 사용자가 원하는 기능과 목적을 사용자가 손쉽게 달성할 수 있도록 모든 서비스를 제공해주는 SW

 

📌os가 하는 주요한 일 : resource management (coordinater)

- (편의성)복잡한 컴퓨터 시스템을 쉽게

- (효율성)복잡한 컴퓨터 시스템 resource를 효율적으로 사용 및 관리하여 성능 극대화 가능케 / (→ 컴퓨터가 사용하는 기능을 충분히 활용할 수 있게! 사용자가 원하는 기능을 가장 빠르고 효율적이게 수행)

- (공정성)여러 작업을 수행중일 때 하드웨어 자원을 적절히 할당 → user experience 보장

 

📌os의 분류

- single user system

: 동시에 해당 시스템에 접속할 수 있는 유저의 수가 1명

- multi user system

: 동시에 해당 시스템에 접속할 수 있는 유저의 수가 1명 이상

 

- single tasking system

: 한 번에 오직 하나의 program만 수행 가능

- multi tasking system

: 한 번에 여러가지의 program 수행 가능

 

- open source system (linux)

: 소스코드 변경 가능

- closed source system (window)

: 소스코드 변경 불가


2️⃣History of OS

새로운 서비스와 하드웨어들로 인해 운영체제의 진화가 발생한다.

 

1. (~1950년대) serial processing

: 특별히 OS가 없어 운영자가 필요했다. 인력에 비해 하드웨어가 값이 비쌌다. 기계어 별로 프로그램이 존재했으며, 하나의 프로그램은 컴퓨터 수행에 필요한 모든 것이 포함되어야 했다. 콘솔에서 한 명의 사용자가 작업 가능했고, 오프라인 디버깅을 수행했다. 작업 간의 전환이 매우 느렸다.

목적 : 하드웨어의 효율적 활용

 

2. (~1960년대) batch processing

: 모든 프로그램과 데이터를 수집한 후 batch 단위로 묶어 한꺼번에 처리했다. 특수 프로그래밍 언어, job control language가 존재했다. 설정 및 작업시간이 단축되어 CPU 활용도가 높아졌다.

- monitor가 항상 main memory 안에 상주하여 simple scheduler 역할을 수행했다. (→ OS의 프로토타입)

→ 메모리 보호, 타이머, 명령어, interrupt가 추가되었다.

 

3. (~1970년대) multiprograming batch processing

: I/O 받는 시간동안 CPU가 다른 일을 하지 못하는 비효율 발생! → 그동안 CPU가 다른 일 할 수 있게 multiprogramming system 안정적으로 구현해야했다.

목적 : CPU utilization 최대화 / job control language

 

🌟안정적 멀티프로그래밍에 필요한 기능들이 추가되었다.

- buffering 및 interrupt handling

: 특정 job 수행 후 다시 수행하던 job으로 돌아갈 때, 이전 수행시에 계산된 값이 기억되어야 한다.

- memory protection & relocation

: <protection> job 수행시에 다른 job이 소유한 메모리 영역을 사용하지 못하게 한다.

  <relocation> 특정 job의 수행이 끝나 memory에서 빠지고, 새로운 job이 들어올 때 해당 job을 메모리의 적절한 곳에 배치해야한다. ( 새로운 job이 더 용량이 큰 경우 등)

- concurrent programing

: 동시에 여러 프로그램 실행시, 해당 job들을 끊기지 않고 쭉 수행했을 때와 실행결과가 똑같이 나올 수 있어야한다.

- job scheduler

: 이 job의 수행 후 무슨 job을 수행할지를 우선순위, 메모리 크기 등 여러 기준을 통해 결정한다.

 

4. (~1980년대) time-sharing processing

: 하드웨어가 저렴해져 사람들의 시간을 효율적으로 활용하는 것이 중점이 되었다. user experience!

목적 : response time 최소화 / 터미널에 입력된 명령어에 의해 수행

→ interactive computing : 동시 사용자가 몇명이든지 사용자와 1대1로 요청이 실행되게 하는 것

→ CPU가 인간의 감각보다 빨라졌기에, 사용자의 전체 시간을 쪼개어 처리함으로 여러 사용자의 요청이 동시에 처리되는 것처럼 보인다.

 

🌟성능의 지표

- throughput : 일정 시간 동안 얼마나?

- response time : ‘내 요청이 수행되고 있구나!’를 알 수 있는 첫번째 응답까지의 시간

- TAT(turn around time) : 시작부터 최종 완료까지의 시간

 

🌟I/O type

- synchronous i/o : 같은 동작을 수행할 때 매번 같은 결과를 보장한다.

- asynchronous i/o : 같은 동작 수행시 매번 같은 timeline이 보장되지 않는다. (하드웨어의 data 이동을 기다리지 않고 그동안 다른 일을 한다.)

 

🌟real time system : system은 특정 deae line이 충족되어야 한다.

- hard real time system : dead line 100% 보장. 어길 경우 제한적 결과가 초래된다. (재산 손실, 인명피해 등)

- soft real time system : dead line 어길 수도 있다. 어겨도 제한적 결과는 발생하지 않고, QoS에 영향을 미친다.

'Computer Science > Operationg System (운영체제)' 카테고리의 다른 글

[OS] scheduling(1)  (0) 2024.05.06
[OS] LDE machanism (limited direct execution)  (0) 2024.05.01
[OS] Process  (0) 2024.04.29
[OS] computing system  (0) 2024.04.29
[OS] OS의 특징  (0) 2024.04.29