본문 바로가기

Information Technology/OS

[운영체제] Introduction to Operating Systems

하드웨어에 대한 효율적 관리 역할

- 협의의 운영체제 : 커널(Kernal). 운영체제의 핵심 부분으로 하드웨어가 부팅되면 항상 메모리에 상주함

- 광의의 운영체제 : 커널을 포함하여 각종 주변 시스템 유틸리티를 포함한 개념. 메모리에 상주하지 않는 독립적인 프로그램들. 

ex) 윈도우를 설치하면 단순히 윈도우 커널 외에 파일을 복사하는 별도의 소프트웨어 등등을 포함

 

운영체제의 역할

1) 자원의 효율적 관리**

2) 사용자의 편리한 이용

3) 소프트웨어 자원의 관리

 

1)

CPU, 메모리 등등의 하드웨어 자원은 이미 주어진 것. 결정된 것. 이걸 가지고 최대한의 성능을 내게 만드는 것이 운영체제

1. 효율성-> 특정 프로그램, 사용자의 차별로 이어질 수 있음

2. 형평성

 

2)

마치 3개의 컴퓨터가 있는 것 같은 착각

CPU는 매우 빠른 연산 처리 기기. CPU가 실행 중인 프로그램들에게 짧은 시간의 간격을 두고 CPU를 번갈아가면서 할당.

그럼에도 메모리에 각각의 공간을 분배


운영체제의 분류

 

1. 동시 작업 가능 여부

- 단일 작업(single tasking): 한 번에 하나의 작업만 처리. ex) MS-DOS 프롬프트상에서는 한 명령의 수행이 끝나기 전에 다른 작업 수행 x. 특수 목적으로 제작된 기계는 단일 작업 지원.

- 다중 작업(multi tasking): 동시에 두 개 이상의 작업 처리. ex) 리눅스, MS Windows 등등

 

2. 사용자의 수: 여러 사람이 동시에 접근 및 이용 가능 여부(다중 계정 생성 및 사용 여부)

- 단일 사용자: MS-DOS, MS Windows

- 다중 사용자: 리눅스, NT 서버. 보안 기능 및 사용자 간 형평성 유지 기능 필요.

 

3. 처리 방식

- 일괄 처리(batch processing): 작업이 주어질 때 바로바로 처리하지 않고 작업을 모아서 한꺼번에 처리. 초기 Punch Card 시스템. 

 

- 시분할(time sharing): 우리가 사용하는 컴퓨터 그 자체.. 여러 작업을 수행할 때 작은 시간 단위로 작업을 번갈아가며 할당. interactive. 입력하는 대로 바로바로 뜸. 범용 PC. 동영상 재생 애플리케이션 등등이 있지만 데드라인을 모두 지켜줄 수 없음. 하지만 스마트폰 내비게이션이나 블랙박스 등등에 대해서는 고민해봐야 함

 

- 실시간(real time): 데드라인 존재. 정해진 시간 안에 결과를 반드시 보장하는 시스템. 특수 목적을 가진 시스템(special purpose system). ex) 원자로, 미사일 제어, 로봇 제어 등등. 반도체 장비 -> 파이프라인 시스템. 모두 데드라인이 존재함. 그래서 반도체 공장에 정전이 한 번 나면 중간 공정에 있던 반도체들은 폐기. 이런 걸 Hard realtime system(경성 실시간 시스템). 이에 비해 데드라인은 존재하지만 데드라인이 어겨진다고 크게 문제가 되지 않는 것들(ex. 영화 상영)을 Software realtime system(연성 실시간 시스템)

 

** 용어 정리

1. Multitasking: 엄밀히 말하면 CPU에서는 매 순간에 하나의 작업을 실행. 다만 매우 짧은 시간을 두고 반복하면서 진행하기 때문에 동시에 진행하는 것처럼 보임. 이게 멀티 태스킹

2. Multiprogramming: 메모리에 여러 프로그램이 동시에 올라가는 상태. 물론 멀티 태스킹이 되려면 당연히 여러 프로그램이 올라가야 함. 특별히 메모리 측면을 강조해서 메모리에 여러 프로그램이 올라간 방식을 멀티프로그래밍 방식으로 나타냄.

3. Time sharing: CPU를 좀 더 강조한 측면. CPU는 시간을 쪼개어 여러 프로그램을 동시에 실행시킴. 

4. Multiprocess: 프로세스 -> 실행 중인 프로그램. 여러 프로그램이 동시에 실행된다는 의미. 

1~4번은 유사한 의미로 사용. 운영체제가 1~4번의 기능.

0. Multiprocessor: processor-> CPU를 의미. 즉 CPU가 여러 개 있음을 의미. 1~4번은 CPU가 하나이더라도 시간을 나눠서 동시에 실행이 가능하게 하는 방식. Multiprocessor는 하드웨어적으로 다른 환경.


운영체제의 예.

 

- 유닉스(UNIX)

초창기 -> 대형 컴퓨터를 위해 만들어진 운영체제

거의 기계어로 만들어서 매우 복잡. 이를 해결하기 위해 UNIX를 만들기 위해 태어난 프로그래밍 언어가 C언어.

이식성이 좋음.

메모리에 상주해야 하는 커널의 크기를 작게 만듦. 핵심적인 기능만 커널에 포함하는 구조.

리눅스 -> 서버도 가능하지만 주로 개인용. 안드로이드도 커널은 리눅스 커널.

 

 

- 윈도우(Windows) -> PC(Personal Computer)를 대상으로 만들어진 프로그램

다중 작업용 GUI 기반 운영 체제 

 

- DOS(Disk Operating System)

단일 사용자용 운영체제


- CPU 스케쥴링: 어떤 프로그램에 CPU를 할당할지 결정. CPU는 굉장히 빠른 연산 장치이기 때문에 짧은 간격으로 CPU를 할당하는 게 가능. 단순히 선착순은 아님. 보통 CPU를 짧게 쓰는 프로그램에 우선순위를 주면 성능이 조금 나아짐. 

 

- 메모리 관리: 한정된 메모리 공간을 어떤 프로그램에 어떻게 할당할 것인지. 사용될 가능성이 높은 프로그램은 메모리에 머무르는 우선순위가 높음. 

 

- 파일 관리: 디스크에 파일을 어떻게 저장할지 결정. 

 

- 입출력 관리: I/O Device를 어떻게 관리할지. 입출력 기기는 메모리, 디스크 등등에 비해 속도가 느림. CPU에게 인터럽터를 걸어서 작동.