본문 바로가기

[운영체제] 01. 운영체제란?

@ansi.2024. 4. 3. 18:31
이 글은 KOCW 양희재 교수님의 운영체제 강의를 수강하고 정리 및 재구성한 글입니다.
강의 링크 : http://www.kocw.net/home/cview.do?cid=5c3c30382c7bbcf6

 

1. 운영체제란?

운영체제란,

  • 컴퓨터의 하드웨어를 잘 관리하여,
  • 성능을 높이고,
  • 사용자에게 편의성을 제공하는

소프트웨어(프로그램)을 의미한다.

 


 

2. 컴퓨터의 구조

운영체제를 공부하기 앞서 컴퓨터의 구조에 대해 알아보자.

 

컴퓨터는 프로세서(CPU), 메모리(=메인 메모리), 보조 메모리(=하드 디스크)로 구성되어 있다.

하드디스크에는 OS나 hwp와 같은 응용프로그램이 설치되어있다.

메인 메모리는 대부분이 RAM으로 구성되어있고, 일부를 ROM이 차지한다.

그리고 일반적으로 RAM의 크기는 MB~GB 단위인 반면에 ROM은 KB 단위로, RAM보다 훨씬 작다.

 

그렇다면 ROM은 왜 필요할까?

 

결론부터 말하자면, 운영체제(OS)를 메인 메모리에 적재(로드)시키기 위함이다.

 

🔎 ROM에 대해 - RAM과 ROM의 차이
  • RAM(Random Access Memory)은 휘발성 메모리로, 전원이 꺼지면 데이터가 날아간다.
  • 하지만 하드디스크는 전원을 꺼도 데이터가 남아있다.
  • ROM도 Read Only Memory이기 때문에 하드디스크와 마찬가지로 전원을 껐다 켜도 데이터가 날아가지 않고 유지된다.

 

3. 운영체제가 메인 메모리에 적재되는 과정

1. 컴퓨터의 전원이 켜지면 자동으로 ROM에 내장되어있는 'POST' 프로그램이 실행된다.

🔎 POST (Power-On Self-Test)란?
  • 전원이 켜져 있는지, 컴퓨터의 모든 환경설정이 제대로 되어있는지 등을 self test 하는 프로그램
  • 이외에도 메인메모리가 얼마인지, 하드디스크 용량이 얼마인지, 마우스 및 키보드가 꽂혀있는지 등을 검사한다.

 

2. POST 실행 후에는 '부트 로더' 프로그램이 실행된다.

🔎 부트 로더란?
  • 운영체제(OS)는 컴퓨터의 하드디스크 안에 설치되어있다.
  • 부트 로더는 하드디스크를 뒤져서 OS를 메인메모리의 RAM 영역으로 가져오는 역할을 한다.

 

3. POST와 부트 로더를 실행하고나면 ROM의 역할은 끝난다. 따라서, 전원을 켰을 때만 ROM이 필요하다.

 


 

4. 운영체제가 메인메모리에 적재되고나서 생기는 일

ROM이 POST와 부트 로더를 실행함으로써 OS가 메인메모리에 적재되고나면 모니터에 바탕화면이 나타난다.

이는 OS가 사용자로 하여금 일을 시켜주기를 기다리는 상태를 의미한다.

이제부터 컴퓨터의 전원이 꺼질 때까지 여러 프로그램이 메모리에 적재되었다가 내려가는 일을 반복하는데, OS는 메인메모리에서 내려가지 않고 늘 적재되어 있다.

이를 다른 말로, 'OS가 메인메모리에 상주(Resident)한다'고 한다.

OS는 컴퓨터의 전원을 끄는 순간이 되어서야 메인메모리에서 내려간다.

 


 

5. 운영체제의 위치

OS의 위치는 다음 2가지 그림으로 표현할 수 있다.

 

위 그림으로 알 수 있는 점은 바로 애플리케이션은 하드웨어가 아닌 OS 위에서 동작한다는 사실이다.

바꿔 말하면, 한 프로그램(애플리케이션)이 실행되기 위해서는 반드시 OS가 필요하다.

 


 

6. 운영체제의 구조

운영체제는 하드웨어와 소프트웨어(애플리케이션) 사이의 인터페이스 역할을 하는 시스템 소프트웨어이다.

그리고 운영체제는 핵심 구성 요소로 2가지를 가지는데, 바로 '커널'과 '쉘'이다.

 

 

 

커널은 핵심(Core), 쉘은 껍질!

(따라서 운영체제 강의에서는 쉘이 아닌 커널에 초점을 맞춰 학습한다.)

 

커널 (Kernel)

  • 커널은 운영체제의 핵심으로, 운영체제의 가장 안쪽에 위치한다.
  • 하드웨어를 제어하고 관리하는 역할을 한다.
  • 커널과 밀접하게 연관되어 있는 개념으로는 '시스템 콜'이 있다.
  • 응용 프로그램(애플리케이션)은 시스템 콜을 통해 커널의 기능을 활용하여 하드웨어 자원에 접근하거나 다양한 운영체제 서비스를 이용할 수 있다.

 

🔎 시스템 콜 (System calls = Operating System calls)이란?
  • 개념
    • 애플리케이션(프로그램)이 운영체제 서비스를 받기 위해 보내는 호출
    • = 프로세스가 실행 중에 파일 생성, 프린트 등의 OS 서비스를 받기 위해 OS에게 부탁하는 것
  • 주요 시스템 콜
    • Process: end, abort(강제종료), load, execute, create, terminate, get/set attributes, wait event, signal event
    • Memory: allocate, free
    • File: create, delete, open, close, read, write, get/set attributes
    • Device: request, release, read, write, get/set attributes, attach/detache devices
    • Information: get/set time, get/set system data
    • Communication: socket, send, receive

 

쉘 (Shell)

  • 명령해석기(command interpreter)라고도 부른다. 
  • 쉘은 운영체제의 바깥에 위치해,
  • 사용자로부터 키보드나 마우스를 통해 명령을 받아들여 그 명령을 해석하고, 해당하는 작업을 운영체제에게 요청해 실행하게끔 한다.
  • 윈도우즈와 리눅스는 각각 다른 쉘 환경을 가지고 있다.
    • 윈도우즈 - GUI 인터페이스를 기반으로 아이콘들을 클릭해 명령을 실행한다.
    • 리눅스 - 텍스트로 명령 실행한다. (ex. $ ls, $ who, …)

 


 

7. 운영체제 서비스 (운영체제가 하는 일)

1. 프로세스 관리 (Process management)

  • 프로세스의 생성, 소멸 (creation, deletion)
  • 프로세스 활동 일시 중지, 활동 재개 (suspend, resume)
  • 프로세스간 통신 (inter-process communication: IPC)
  • 프로세스간 동기화 (synchronization)
  • 교착상태 처리 (deadlock handling)
🔎 프로세스(Process)란?
  • 프로세스는 '메모리에서 실행 중인 프로그램'을 의미한다.
  • 즉, 하드디스크에 있던 프로그램이 메인 메모리에 올라와 실행중인 것을 프로세스라고 한다.
  • CPU에 의해 실행되는 대상은 하드디스크의 프로그램이 아닌 메인메모리에 올라와있는 프로세스이다.

 

2. 주기억장치 관리 (Main memory management)

  • 프로세스에게 메모리 공간을 할당 (allocation)
  • 메모리의 어느 부분이 어느 프로세스에게 할당되었는가 추적 및 감시
  • 프로세스 종료 시 메모리 회수 (deallocation)
  • 메모리의 효과적 사용을 꾀함
    • 예) 가상 메모리: 물리적 실제 메모리(메인메모리)보다 큰 용량을 갖는 것처럼 보이게 하는 기술
    • => 하드디스크의 용량에 비해 메인메모리의 용량이 상대적으로 훨씬 작기 때문에 사용

 

3. 파일 관리 (File management)

OS는 트랙(Track)과 섹터(Sector) 로 구성된 '디스크'를 '파일'이라는 논리적 관점으로 볼 수 있게 한다.
  • 파일의 생성과 삭제 (file creation & deletion)
  • 디렉토리(directory)의 생성과 삭제 (또는 폴더 folder)
  • 기본동작지원: open, close, read, write, create, delete
  • Track/sector 와 파일 간의 매핑(mapping)
  • 백업(backup)

 

4. 보조기억장치 관리(Secondary storage management)

보조기억장치의 종류로는 하드 디스크, 플래시 메모리 등이 있다.
  • 보조기억장치의 빈 공간을 관리 (free space management)
  • 저장공간 할당 (storage allocation)
  • 디스크 스케줄링 (disk scheduling)
    • 디스크의 헤드를 많이 움직일 수록 시간이 많이 걸린다 → 헤드를 적게 움직이는 방법을 결정

 

5. 입출력 장치 관리 (I/O device management)

  • 장치 드라이브 (Device drivers) 관리
  • 입출력 장치의 성능향상: 버퍼링(buffering), 캐싱(caching), 스풀링(spooling)

 


 

운영체제는 한마디로 '정부(Government)'에 비유할 수 있다.

 

OS의 다른 이름은 '자원 관리자(resource manager)' 또는 '자원 할당자(resource allocator)'로,

그 이름처럼 OS는 ‘애플리케이션에게’ 자원을 관리하고 할당한다. (하드웨어를 다른 말로 자원Resource 이라고 한다.)

 

이는 정부가 국토, 인력, 예산과 같은 자원을 관리하고 활용하는 것에 비유할 수 있다.

그러나 정부는 관리만 할 뿐 실제로 일하지는 않는다.

실제로 일하는 주체는 행정부, 교육부, 국방부 등 각 부문을 관장하는 부서들이다.

OS도 마찬가지다.

 

OS에는 다음과 같은 부서들이 존재한다.

 

  • CPU(프로세서)를 관리하는 부서(Processor Management. PM)
  • 메인메모리를 관리하는 부서(Memory Management)
  • 입출력장치를 관리하는 부서(I.O Management)
  • 파일을 관리하는 부서(File ~)
  • 네트워크와 보안을 관리하는 부서

 

이외에도 여러가지 부서가 존재해 운영체제의 기능들을 담당하고 있다.

 

 

ansi.
@ansi. :: 공부 기록 공간 🌟

공부한 걸 기록합니다.

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차