운영체제

운영체제 기본 1 - 운영체제 서론

hs-archive 2023. 1. 19. 16:35

http://www.kocw.net/home/search/kemView.do?kemId=978503 

 

운영체제

운영체제의 정의 및 역할 등에 대해 알아보고, 운영체제의 주요 요소들, 즉 프로세스 관리, 주기억장치 관리, 파일 시스템 등에 대해 공부한다.

www.kocw.net


운영체제 서론

운영체제 서론

 

메모리에 있는 명령들을 instruction이라고 부르고, 그 instruction의 집합을 '프로그램'이라 부른다. 이러한 '프로그램'을 미리 메모리에 내장해 두고 실행하는 구조를 '프로그램 내장형 컴퓨터'(stored program concept)라고 한다.

 

컴퓨터는 전원을 켜면 process가 memory에 있는 명령어 하나를 들고 와서 실행하고 또 그다음 명령을 들고 와서 실행하고... 하는 형식이다. 여기서 OS는 자원 관리/할당을 맡는다. 만약 OS가 없다면 memory를 관리하는 관리자가 없는 것이므로 메모리 안에는 자기 멋대로의 값이 들어가 있을 것이다. 그러한 상황에서는 process가 명령어를 가져와서 실행하려 해도 memory에는 자기 멋대로의 값이 들어가 있기 때문에 뭘 계산하고 할 수가 없다. 한마디로 OS가 없는 컴퓨터는 길들여지지 않은 야생마 같은 것으로 내가 원하는 대로 일을 할 수가 없는 것이다.

 

Q. memory는 휘발성이기 때문에 껐다 켜면 값이 다 날아가고 제멋대로의 값이 들어가 있는데 누가 프로그램을 메모리에 올려주나?

: OS가 해준다.

 

Q. 파일을 저장할 때 누가 하드디스크에 저장을 해주나?

: OS가 해준다.

 

Q. 현대 대부분의 컴퓨터는 한 번에 여러 개의 프로그램을 실행한다. main memory에 여러 program이 올려져 있는데 반해 process는 하나뿐이다. 어떻게 동시에 여러 프로그램을 실행할까?

: OS가 해준다.

 

Q. 프린터로 인쇄를 하려 할 때 파일들을 어떻게 인쇄할까?

: OS가 해준다.

 

=> 운영체제(OS, Operating System)란 컴퓨터 하드웨어들(CPU, memory, disk, GPU, Power supply, ......)을 잘 관리하여 성능을 높이고(performance) 사용자들에게 편의성(convenience)(만약 OS가 없었다면 위의 저 일들을 모두 우리 손으로 해야 됐을 것이므로)을 제공하는 프로그램이다.

 

ROM과 부팅

컴퓨터 하드웨어는 크게 processor(= CPU), memory(RAM, ROM), disk 세 가지로 나눌 수 있다. CPU는 계산을 담당하고 memory는 CPU와 disk 간의 속도 차이를 개선하고 Disk는 데이터의 저장을 담당한다. 이 중 memory는 또다시 RAM과 ROM으로 나누어진다. RAM은 앞서 말한 대로 CPU와 disk 간 속도 차이를 개선하기 위해 존재하며, CPU가 요구하는 여러 데이터를 임시 보관하는 작업을 수행한다. 자유롭게 읽고 쓸 수 있는 보조기억장치이므로 RWM(Read Write Memory)라고 불리기도 한다. 이에 반해 ROM은 Read Only Memory로 말 그대로 읽기만 가능하고 내용을 재작성할 수 없다. 그렇다는 것은 disk의 데이터를 ROM으로 옮겨 적을 수 없다는 말이다. 이를 보면 ROM은 도대체 왜 있는지 모르겠는 영 쓸모없어 보이는 메모리지만 우리의 PC에는 모두 ROM이 들어가 있다. 우리는 이러한 ROM을 왜 사용하는 것일까. 

 

ROM의 필요성

RAM은 휘발성이기 때문에 전원을 껐다 켜면 RAM에 있는 정보들은 모두 날아간다. 그에 반해 ROM은 전원에 관계없이 정보가 유지된다. ROM의 쓸모는 이러한 특징에 기인한다. OS를 제외한 다른 프로그램들은 모두 OS가 메모리에 적재시켜 주지만 정작 OS는 자기 자신을 메모리에 적재시킬 수 없다. 왜냐하면 OS도 결국 프로그램이므로 처음 전원이 들어왔을 때는 디스크에 존재하며 디스크에 존재하는 프로그램은 스스로를 메모리에 적재시킬 수 없기 때문이다. 따라서 OS를 메모리에 적재시켜 주는 누군가가 있어야 하는데 그러한 명령을 바로 ROM에 저장해 놓는 것이다. ROM은 전원이 꺼지든 켜지는 안의 정보가 사라지지 않으므로 항상 ROM 메모리에 적재되어 있으며 따라서 전원이 켜지는 태초의 순간에 OS를 RAM에 적재시킬 수 있다. 그 외에 ROM은 전원이 들어왔을 때 기본적으로 체크해야 할 것(키보드는 연결 돼있나, 환경 설정은 제대로 되어있나 등등)들을 확인하는 일도 한다. ROM의 명령의 순서는 아래와 같다. 

 

1. POST (Power-On Self Test)

  - 말 그대로 전원을 켜면 하는 셀프 테스트

  - 환경설정은 제대로 되어 있는가

  - 키보드는 꽂혀 있는가

  - 메인 메모리는 얼마나 꽂혀 있는가

  - 프린트가 연결되어 있는가

  - 등등

2. Boot loader

  - POST를 실행한 다음 Boot loader가 실행된다.

  - Boot loader는 hdd 안에 있는 OS를 찾아서 메인 메모리(그중 RAM)로 가져온다.

  - 이렇게 OS가 메인 메모리로 올라오는 것을 '부팅'이라고 한다.

  - 이렇게 OS가 메인 메모리로 올라오면 비로소 우리는 바탕화면을 보게 된다. 다시 말해 비로소 우리가 OS를 통해 여러 프로그램들을 사용할 준비가 완료된 것이다.

 

** 메인 메모리에 올라간 OS는 전원을 끄기 전까지 메인 메모리에 상주하며 전원을 끄면 사라진다.(RAM은 휘발성이므로) 그에 반해 다른 프로그램들은 메모리에 올라왔다 사라지고, 올라왔다 사라지고 한다. 예를 들어, 한글파일을 보려고 hwp 파일을 실행시킨 뒤 꺼버리면 hwp는 메인 메모리에서 사라진다. 마찬가지로 게임도 하다가 꺼버리면 메인 메모리에서 사라진다. 그에 반해 OS는 전원이 거질 때까지 남아있는다. 그래서 OS를 다른 말로 Resident(상주)라고도 부른다.

 

OS의 구성

OS = shell(껍질) + kernel(핵심, 중심, 코어)

 

OS는 하드웨어를 제어/관리한다. 실질적으로 하드웨어를 제어/관리하는 부분을 kernel이라고 하며 사용자와 소통하는 바깥 부분을 shell(껍데기)이라 한다. 사용자는 shell이 제공하는 인터페이스를 통해 shell에게 요청을 전달하고 shell은 사용자의 요청을 해석하여 kernel로 넘겨주고 kernel은 넘겨받은 요청을 수행하는 형식으로 OS가 동작한다. 다시 말해 shell은 kernel과 사용자 간 다리 역할을 하는 하나의 interface이다. 예를 들어, 바로가기 아이콘을 더블 클릭하거나 bash shell과 같은 command interpreter를 사용하여 명령어를 입력하면 shell은 그러한 명령을 받아서 해석한 뒤 kernel에게 전달하고 kernel이 실제 HW를 실행하여 해당 프로그램이 실행되는 것이다. (User > shell > kernel) 만약 shell이 없었다면 더블 클릭으로 프로그램을 실행하는 것이 불가능하며 kernel과 직접 소통을 위해 기계어 수준의 명령을 직접 입력해야 할 것이다. 또, HW에 치명적인 실수를 방지할 수도 없을 것이다. 이를테면, shell은 인터페이스니까 사용자가 치명적인 명령을 내리면 경고를 하거나 해당 명령을 차단하는 등 방지 대책을 세울 수 있지만 kernel과 직접 소통하면 그런 거 없다. 이처럼 shell이라는 인터페이스를 제공하는 이유는 편의성과 보안 때문이다. 

OS = kernel + shell


 

** command interpreter란 입력된 명령어를 읽고 실행하는 컴퓨터 프로그램이다. 줄 단위의 명령어를 읽어 들인다고 하여 명령 줄 인터프리터 혹은 명령행 인터프리터라 부르기도 한다. e.g., 명령 프롬프트(Command Prompt, cmd.exe), bash shell

명령 프롬프트

 

OS의 위치

사용자가 하드웨어에 직접 접근하지 않고 User > Shell > Kernel의 순으로 간접 접근하는 것처럼 Application(= 프로그램) 또한 하드웨어에 직접 접근하지 않고 OS에게 요청을 보내 하드웨어에 간접 접근한다. 이는 사용자가 하드웨어에 직접 접근하지 않는 이유와 마찬가지로 편의성과 보안 때문이다. 아래 그림을 보면 알 수 있듯 Application은 OS 위에서 작동한다. 따라서 OS가 바뀌면 Application은 실행되지 않는다. OS마다 API가 다르기 때문이다.(windows API와 MAC API가 다르므로 windows 위에서 돌아가는 앱은 MAC에선 돌아가지 않는다. 반대도 마찬가지) Application은 하드웨어의 자원을 사용하지만(e.g., 한글 프로그램 같은 경우 '저장'을 누르면 disk에 저장이 되어야 함) 직접적 사용하지 않고 OS가 관리해 주는 대로 간접 사용한다. 그래서 OS를 resource manager 혹은 resource allocator라고도 한다.

OS의 위치

 

 

 

 

 


https://ko.wikipedia.org/wiki/Cmd.exe

 

cmd.exe - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 명령 프롬프트(실행 파일이름: cmd.exe)는 OS/2, 윈도우 임베디드 컴팩트 그리고 윈도우 NT 5.0 이상 기반 시스템의 명령어 인터프리터이다. MS-DOS와 윈도우 9x 시스템

ko.wikipedia.org