본문 바로가기
학교 강의/운영체제

[Chapter 1] Introduction to Operating Systems

by dustnn 2025. 4. 10.

 

 

운영체제란?

 

컴퓨터 하드웨어 바로 위에 설치 -> 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층

<운영체제>

: 컴퓨터가 꺼질 때까지 실행

* 컴퓨터 booting -> 운영체제가 메모리에 올라가 실행 시작

* 컴퓨터 종료 -> 운영체제 실행 종료

- 커널: 운영체제의 핵심 부분

- I/O controller: 각 I/O device들을 전담하는 controller

ex. CPU가 하드디스크로부터 파일을 불러오고 싶음 -> I/O controller가 가져다 줌 -> 하드디스크가 자신의 메모리에 내용 저장

운영체제의 목적

 

1. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공(하드웨어 관리 + 편리한 인터페이스 제공)

- 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상 제공

* 나 혼자 physical machine(server)를 사용하는 느낌이 들도록

- 하드웨어를 직접 다루는 복잡한 부분을 다룸

 

2. 컴퓨터 시스템의 한정된 자원을 공평하고 효율적으로 관리해 최대한으로 성능 뽑아내기

- CPU, 메모리, I/O 장치 등을 관리(사용자에게 번갈아 나누어줌)

: (효율성) 주어진 자원으로 최대한의 성능 내도록 -> 주 목적

: (형평성) 특정 사용자/프로그램의 지나친 불이익이 발생하지 않도록

- 사용자 및 운영체제 자신의 보호

 

컴퓨터 시스템의 구조 & 운영체제의 기능

 

컴퓨터 시스템 구조

운영체제는 다음 4가지 기능을 가진다.

메모리 관리

 

: CPU의 작업 공간

: 컴퓨터 켜지면 운영체제가 올라가 CPU 관리

: 나머지 공간은 프로세스들이 차지해 사용

 

<메모리 관리>

"한정된 메모리를 어떻게 쪼개어 쓰지?"

 

CPU 스케줄링

 

: 매 clock 마다 메모리의 기계어 읽어다가 연산하는 하드웨어

ex. 메모리의 운영체제에 들어 있는 기계어 중 "프로그램 c에게 CPU 할당" 읽어들여 실행 -> 프로그램 c에게 CPU 할당

 

<CPU 스케줄링>

"어떤 프로그램에게 CPU 사용권을 줄까? 그 프로그램에게 얼마나 오래 할당할 것인가?"

 

디스크 스케줄링

 

"disk controller"

: disk에 요청이 들어오면, disk가 바로 주지 않고 disk controller라는 비서가 정보 제공 스케줄 담당(디스크 스케줄링)

 

<디스크 스케줄링>

"디스크에 들어온 요청을 어떤 순서로 처리할까?"

: 순서대로 처리X, 가장 효율적으로 처리O

=> 엘리베이터와 같은 원리로 처리(가는 김에 태워서 가기 등 ..)

 

인터럽트, 캐싱

 

"빠른 CPU와 느린 I/O 장치 간 속도 차이를 어떻게 극복하지?"

* 속도: 디스크 < 메모리 < CPU

 

<인터럽트>

I/O controller에게 작업을 부탁한 후 당장 CPU 자신이 할 수 있는 일 수행

-> I/O controller가 작업을 끝내면 CPU를 인터럽트

-> CPU는 자동으로 운영체제에게 넘어감

* CPU는 기계어 하나 실행 끝나면 인터럽트 확인

 

<캐싱>

메모리와 디스크 간 속도 차이

-> 자주 사용하는 것이라면 메모리 어딘가에 보관해뒀다가 나중에 사용

-> 디스크까지 가는 시간을 절약할 수 있음

 

 

프로세스의 상태

 

CPU는 자신의 규칙에 맞게 각 프로세스에게 할당하는데,

한 프로세스가 너무 많이 사용하지 않도록 큐의 마지막에 다시 줄세우거나 함

 

초록색 동그라미가 프로세스

 

<사람과 인터렉션하는 프로세스>-I/O device

CPU가 I/o controller에게 부탁
-> CPU는 자신이 할 일 하고 있음
-> I/O controller가 자신의 규칙에 맞게 큐에 있는 프로세스 처리
-> I/O controller가 일을 완료하면 인터럽트
-> CPU가 운영체제에게 넘어감
-> 운영체제가 완료된 일을 디스크 입출력 큐에서 빼와 CPU 큐에 넣어줌

 

 

<과학적 프로세스>

CPU 가 많이 필요하기 때문에 한 번에 많은 CPU 할당해서 계속 사용하고 있음

 

 

 

 

 

운영체제의 종류

 

동시 작업 가능 여부에 따라

 

- 단일 작업(single tasking)

: 한 번에 하나의 작업만 처리

 

- 다중 작업(multi tasking)

: 동시에 두 개 이상의 작업 처리

ex. UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램 수행 가능

 

=> 다중작업용 운영체제가 되면서 많은 문제가 생기는 것 !

사용자 수에 따라

 

- 단일 사용자

: 혼자만 사용할 수 있는 운영체제

ex. MS-DOS, MS Windows

 

- 다중 사용자

: 여러 사용자가 동시에 사용할 수 있는 운영체제

-> 사용자 간 서로 보지 못할 때 지켜주기 위해 보안 기능 등 추가

ex. UNIX, NT server

 

처리 방식에 따라

 

- 일괄처리

: 작업요청의 일정량 모아서 한꺼번에 처리

: 작업이 완전히 종료될 때까지 기다려야 함

ex. 초기 punch card 처리 시스템

=> 현재는 잘 쓰지 않음

 

- 시분할(time sharing)

: 응답시간이 짧다.

ex. UNIX(LINUX)

: A도, B도 바로 응답하는 것처럼 보이기 때문에 interactive한 방식으로 볼 수 있다.

(워드와 크롬을 둘 다 켰을 때 둘이 동시에 작동하는 것처럼 보이지만, 사실 아니다..)

 

- 실시간(Realtime OS)

: 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS

ex. 원자로 공장 제어, 미사일 제어, 반도체 장비, 로보트 제어 등등...

(예컨대,, 미사일이 잘못 발사됐을 때 미사일의 각도를 트는 것이 정해진 시간 안에 반드시 수행되어야 한다.)

 

1. Hard realtime system(OS): 경성 실시간 시스템

미사일처럼 지금 당장 되지 않으면 안 되는 일 담당

 

2. Soft realtime system(OS): 연성 실시간 시스템

TV처럼 당장 되지 않아도 안전에는 지장이 없는 비교적 유연한 일 담당

 

 

=> 현대의 범용 운영체제는 다중작업, 다중사용자, 시분할을 사용한다.

 

몇 가지 용어

 

- Multitasking

: 사용자 입장에서 여러 작업을 동시에 수행할 수 있는지에 대한 개념

 

- Multiprogramming

: 컴퓨터 관점에서 프로그램을 여러 개 돌릴 수 있는지에 대한 개념

한글, 크롬 등은 각각 여러 개의 프로세스로 구성되어 있다. 

 

- Time sharing

: CPU가 시간을 나누어 작업할 수 있는지에 대한 개념

ex. A 프로그램 1초 -> B 프로그램 2초 -> A ..

 

- Multiprocess

 

=> 모두 하나의 컴퓨터 안에서 하나의 CPU로 여러 작업을 동시에 수행한다는 개념을 가지고 있음(<->multiprocessor)

 

 

<Multiprogramming vs Multiprocess>

 

multiprogramming 관점에서는 3개의 프로세스를, multiprocess의 관점에서는 9개의 프로세스를 실행하고 있는 것이다.

 

프로세스 = CPU

프로세서 = CPU가 여러 개 박혀있음

 

* multiprocessor: 하나의 컴퓨터에 CPU 칩이 여러 개

* multicore: Cpu 칩은 하나이지만, 그 안에 조그마한 프로세서가 여러 개 내장되어 있음

 

운영체제의 예

 

소프트웨어는 사용자의 컴퓨터에 설치되면 그냥 그것만 쓸 수밖에 없게 되기 때문에 독점 체제가 가능

-> 다양한 세컨드 소프트웨어 회사들이 소스코드 무료 공개 "에라잇 모르겠다 이미 뺏겼다~"

 

<UNIX(=LINUX)>

 

- 코드의 대부분을 C언어로 작성

: INTEL, ARM, MIPS 등 여러 가지의 CPU 종류는 각각의 ISA 가지고 있음

 

- 높은 이식성

: 어디든 옮겨갈 수 있음

 

- 최소한의 커널 구조

: 사용자가 재량대로 확장할 수 있음

 

- 복잡한 시스템에 맞게 확장 용이

 

- 소스코드 공개

: 누구든 커널에 접근 가능

 

- 다양한 버전

: UNIX 종류에는 System V, FreeBSD, SUNOS 등 있었지만 LINUX만 살아남음

 

 

LINUX는 UNIX를 계승

공유하지 않기 위해 MS-DOS 탄생 -> Windows3.1 -> Windows9.8 -> ...

 

<MS>

 

DOS(Disk Operating System)

- MS사에서 1981년 IBM-PC를 위해 개발

- 단일 사용자용 운영체제, 메모리 관리 능력의 한계(주기억장치: 640KB)

 

MS Windows

- MS사의 다중 작업용 GUI 기반 운영체제

- Plug and Play, 네트워크 환경 강화

- DOS용 응용프로그램과 호환성 제공

- 불안정성 <-> LINUX 안정적

ex. 맥북, 아이폰 모두 LINUX 사용하기 때문에 그냥 꺼도 다음에 켜서 쓸 수 있음

- 풍부한 지원 소프트웨어

 

운영체제 구조

 

- CPU 스케줄링: 누구에게 CPU를 줄까

- 메모리 관리: 한정된 메모리를 어떻게 쪼개어 쓸까

- 파일 관리: 디스크에 파일을 어떻게 보관할까

- 입출력 관리: 각기 다른 입출력장치와 컴퓨터 간에 어떻게 정보를 주고받게 할까

- 프로세스 관리: 프로세스의 생성/삭제, , 

'학교 강의 > 운영체제' 카테고리의 다른 글

[Chapter 4] Process Management  (0) 2025.04.19
[Chapter 3] Process  (0) 2025.04.19
[Chapter 2] System Structure & Program Execution  (0) 2025.04.18
[Chapter 5] CPU scheduling  (0) 2025.04.07