본문 바로가기
컴퓨터공학/운영체제

OS 1.기본개념

by Jinger 2023. 4. 2.

서론

 운영체제는 우리가 흔히 말하는 windows, mac, ios, android 등과 "사물 인터넷"을 포함하는 자동차와 홈기기 및 클라우드 컴퓨팅 환경까지 널리 사용되고 있다. 이런 운영체제들의 근본적인 직책은 하드웨어의 자원들을 프로그램에 할당하는 것이다. 그렇기에 운영체제를 이해하기 위해서는 컴퓨터 하드웨어의 구조와 구성을 이해하는 것이 중요하다.


운영체제 정의

컴퓨터 시스템 구성

 운영체제에 들어가기에 앞서 컴퓨터 시스템에 대해 알아보자. 컴퓨터 시스템에는 사용자, 응용프로그램, 운영체제, 하드웨어로 구성되어 있다.(구성요소) 하드웨어는 중앙 처리 장치(CPU), 메모리 및 입출력(I/O) 장치로 구성되어 있다.

운영체제 정의

 일반적으로 운영체제에 대한 적합한 정의는 없다. 운영체제는 유용한 컴퓨팅 시스템을 만드는 문제를 해결할 수 있는 합리적인 방법을 제공하기 위해 존재한다. 컴퓨터 시스템의 기본 목표는 프로그램을 실행하고 사용자 문제를 더욱 쉽게 해결할 수 있게 하는 것이다. 이를 기반으로 정의를 하자면 운영체제(Operating System, Os)는 컴퓨터 하드웨어를 관리하는 소프트웨어다. 주로 응용프로그램을 위한 기반을 제공하며 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중재자 역할을 수행한다.

사용자 관점에서(User view)

 보통 사용자는 I/O장치들 개인만이 사용할 수 있도록 설계되어 있고 사용자가 수행하는 작업을 최대화하도록 되어있다. 이런 경우 운영체제는 대부분 사용의 용이성을 위해 설계되고 성능에 약간 신경을 쓰고 다양한 하드웨어와 소프트웨어 자원이 어떻게 공유되느냐는 자원의 이용에는 전혀 신경을 쓰지 않는다.

시스템 관점에서(System view)

 컴퓨터 관점에서 운영체제는 자원을 할당하기에 하드웨어와 가장 밀접하게 연관된 프로그램이다. 컴퓨터 시스템은 문제를 해결하기 위해 요구되는 여러 가지 자원들을 가진다. 운영체제는 이들의 자원 관리자로서 동작한다. 자원에 대해 서로 상충할 수도 있는 많은 요청이 있으므로, 운영체제는 컴퓨터 시스템을 효율적이고 공정하게 운영할 수 있도록 어느 요청에 자원을 할당할지(리소스 할당자)를 결정해야 한다. 이외에 입출력 장치와 사용자 프로그램을 제어할 때 운영체제가 제어 프로그램으로서 수행된다.

커널(kernel)

 일반적으로 불리는 운영체제는 이 컴퓨터에서 항상 실행되는 프로그램(커널)과 함께 응용 프로그램 개발을 쉽게 하고 기능을 제공하는 미들웨어(응용프로그램 개발자에게 추가 서비스를 제공하는 일련의 소프트웨어 프레임워크) 프레임워크 및 시스템 실행 중에 시스템을 관리하는 데 도움이 되는 시스템 프로그램이 포함된다.


컴퓨터 시스템 운영

컴퓨터 시스템 조직(Computer-system organization)

 각 I/O 장치 컨트롤러(I/O device controller)는 특정 장치 유형을 담당한다. 또한 각 I/O 장치 컨트롤러에는 로컬 버퍼(local buffer)가 있다.

디스크 I/O 작업(Disk I/O operation)

 디스크 컨트롤러는 디바이스 컨트롤러의 로컬 버퍼에서 디바이스로 혹은 역으로 데이터를 이동시킨다. CPU는 디바이스 컨트롤러의 로컬 버퍼에서 메인 메모리로 혹은 역으로 데이터를 이동시킨다. 즉, CPU 및 I/O 장치는 독립적으로 자체 작업을 수행할 수 있다. (장치 컨트롤러는 인터럽트(interrupt)를 통해 CPU에 작업이 완료되었음을 알린다.)

인터럽트 처리(Interrupt handling)

인터럽트가 발생하면 CPU는 수행 중인 작업을 중지하고 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)을 호출한다.

인터럽트 타임라인(Interrupt timeline)


저장장치 구조(Storage Structure)

주기억 장치(Main memory)

 메인 메모리란 CPU가 직접 액세스 할 수 있는 저장 매체이다. RAM(Random Access Memory)로 불리기도 한다. RAM에는 DRAM과 SRAM이 있는 데 메인메모리에서 부르는 RAM은 DRAM(Dynamic Random Access Memory)이다.(SRAM은 캐시나 레지스트) 주기억 장치는 컴퓨터가 켜져 있을 때만 저장이 되는 휘발성(volatile)이라는 특징을 가지고 있다.

보조기억 장치(Secondary memory)

보조 메모리란 큰 비휘발성 저장 용량을 제공하는 저장 매체이다. 예로 HDD(Hard Disk Drives), NAND flash memory, SSD(Solid State Drives)

저장장치 계층(Storage hierarchy)

  • 레지스터(Register)
  • CPU 캐시(cache): SRAM
  • 주기억장치(Main memory): DRAM
  • 보조기억장치(Secondary meemory): HDD, NAND, DVD
  • 광디스크(Optical Disk): CD, DVD
  • 자기 테이프(Magnetic Tape)

다양한 저장매체의 특징

레벨 1 2 3 4 5
이름 레지스터(Registers) CPU 캐시(CPU cache) 메인 메모리(Main memory) 보조기억장치(SSD) 광디스크(Disk)
크기 ~ 1 KB ~ 16 MB ~ 64 GB <1TB ~ 10 TB
구현기술 사용자 지정 메모리(Custom memory with multiple ports), CMOS 온칩 혹은 오프칩(On-chip or offchip) CMOS SRAM CMOS DRAM 플래시 메모리(Flash memory) 자기 디스크(Magnetic disk)
접근 시간(ns) 0.25-0.5 0.5-25 80-250 25,000- 5,000,000 5,000,000
대역폭(Bandwidth, MB/sec) 20,000-100,000 5,000-10,000 1,000-5,000 500 20-150
관리 컴파일러 하드웨어 OS OS OS
백업 캐시 메인메모리 디스크 디스크 CD 혹은 테이프

캐시(Caching)

 프로그램을 실행하려면, 명령(instruction) 또는 데이터는 HDD에서 CPU 레지스터로 로드되어야 한다. 만약 동일한 데이터를 반복적으로 요청하면 매번 같은 처리과정을 거치게 된다. 이에 대한 액세스 속도를 향상하기 위해 더 빠른 저장 매체에 데이터 저장하는 것을 캐시라 한다.

캐싱 특징

  • 캐싱은 시스템의 많은 환경(Web cache, streaming cache 등)과 여러 레벨(CPU cache, operating system’s buffer cache, disk cache 등)에서 수행된다.
  • 요청된 데이터가 있는지 확인하기 위해 캐시를 우선적으로 확인한다. 데이터가 있다면 데이터는 캐시에서 직접 사용하고 데이터가 없다면 데이터를 캐시에 복사하여 사용한다.
  • 일반적으로 캐시 크기는 제한되어 있다. 그렇기에 교체 정책(replacement policy)이 필요하다. e.g. LRU, LFU, clock 등
  • 캐시 된 데이터는 데이터 불일치 등 다양한 상황에 대비해야 하므로 신중해야 한다.
  • 다중 프로세서 환경에서 모든 CPU는 캐시에 가장 최근의 값을 가지고 있다. 이를 캐시 일관성(Cache coherency)이라 한다.
  • 분산 환경의 상황은 더 복잡하다.


운영체제 작동

멀티프로그래밍(Multiprogramming)

 하나의 프로그램은 일반적으로 항상 CPU나 I/O 장치를 항상 바쁘게 사용하지 않으므로 여러 프로그램을 실행할 수 있다. 또한 사용자는 일반적으로 한 번에 둘 이상의 프로그램을 실행하려고 한다. 다중 프로그래밍(멀티프로그래밍)은 CPU가 항상 한 개는 실행할 수 있도록 프로그램을 실행할 수 있도록 프로그램을 구성하여 CPU 이용률(사용률)을 높이고 사용자 만족도를 높인다. OS는 하나의 프로그램을 선택하여 스케줄링을 통해 실행하고 기다려야 하는 경우 다른 프로그램으로 전환한다.

시분할(Timesharing) or 멀티 태스킹(Multitasking)

 시분할과 멀티 태스킹은 다중 프로그래밍의 논리적 확장된 개념이다. 시분할 시스템은 여러 사용자가 하나의 컴퓨터를 공유하여 사용할 때, 컴퓨터의 리소스를 시간 기반으로 분할하여 작업을 수행하는 기술이다. 컴퓨터는 여러 작업에 대한 입력을 받아들이고, 각 작업에 대한 실행 시간을 작게 나누어 처리한다. 이때, 사용자는 마치 모든 작업이 동시에 수행되는 것처럼 느낄 수 있다. 멀티 태스킹은 하나의 컴퓨터가 여러 작업을 동시에 수행할 수 있도록 하는 기술이다. 컴퓨터는 여러 작업을 동시에 처리하기 위해, CPU 실행 시간을 작게 나누어 할당한다. 이때, 컴퓨터는 각 작업의 우선순위와 상태를 고려하여 작업을 스케줄링한다. 이러한 방식으로, 멀티태스킹은 사용자가 여러 작업을 동시에 수행할 수 있도록 하고, 시스템의 활용도를 향상할 수 있다. 두 기술 시간을 쪼개서 여러 응용프로그램을 실행할 수 있도록 모든 컴퓨터 응답 시간을 줄일 수 있는 다중 처리 기술이다. 시분할은 주로 여러 사용자가 공유하는 시스템에서 대화형 작업에 중점을 둔 반면, 멀티태스킹은 단일 사용자 시스템에서 다양한 작업을 동시에 처리하는 데 중점을 둔다. 하지만, 일반적으로 시분할 시스템과 멀티 태스킹을 유사하게 사용된다. 

 프로세스가 실행될 때 일반적으로 프로세스가 완료되거나 I/O를 수행하기 전에 짧은 시간 동안만 실행된다는 것을 생각해 보자. 입출력이 대화식일 수 있다. 즉, 출력이 사용자를 위해  디스플레이되고 입력은 사용자 키보드, 마우스로부터 들어온다. 이러한 대화식 입출력은 전형적으로 사람의 속도로 수행되므로, 완료 시까지 상당히 긴 시간이 걸릴 수 있다. 예를 들면 입력은 사용자의 타이핑 속도에 제한을 받으며, 사람에게는 1초 7 문자가 빠른 편이지만, 컴퓨터에게는 아주 느린 편이다. 이러한 대화식 입력이 진행되는 동안 CPU를 쉬게 하지 않고, OS는  CPU를 다른 사용자의 프로그램으로 신속하게 전환한다.

운영 체제 운영

 OS는 이벤트 기반(이벤트 구동형, event driven)이다. 프로그램, I/O 요청, 사용자가 없다면 OS는 일부 이벤트가 발생하기를 기다린다. 이벤트에는 아래와 같은 예시들이 있다.

  • 하드웨어 인터럽트(Hardware interrupts)
    • Disk interrupt, keyboard interrupt, mouse interrupt 등
  • 소프트웨어 트랩(예외, Software trap, exceptions))
    • 0으로 나누기, 유효하지 않은 메모리 액세스, 시스템 호출 등
  • Other errors
    • 무한 루프

듀얼 모드(Dual mode)

 운영체제와 사용자는 컴퓨터 시스템의 하드웨어 및 소프트웨어 자원을 공유하기 때문에 올바르게 설계된 운영체제는 잘못된(혹은 악의 적인) 프로그램으로 인해 다른 프로그램 또는 운영체제 자체가 잘 못 실행될 수 없도록 보장해야 한다. 시스템을 올바르게 실행하라면 운영체제 코드 실행과 사용자-정의 코드 실행을 구분할 수 있어야 한다. 대부분의 컴퓨터 시스템이 취하는 접근 방식은 다양한 실행 모드를 차별화할 수 있는 하드웨어 지원을 제공하는 것이다. 적어도 두 개의 독립된 연산 모드, 즉 사용자 모드와(User mode) 커널 모드(kernel mode, supervisor mode, 시스템 모드, privileged mode)를 필요하다.

  모드 비트(Mode bit, program status word, PSW)라고 하는 하나의 비트가 현재의 모드를 나타내기 위해 컴퓨터의 하드웨어에 추가되었다. 이 비트는 사용자 모드(1) 또는 커널 모드(0)를 나타낸다. 모드 비트의 사용으로 운영체제를 위하여 실행되는 작업과 사용자를 위해 실행되는 작업을 구분할 수 있다. 동작의 이중 모드는 잘못된 사용자로부터 운영체제를 그리고 잘못된 사용자 서로를 보호하는 방법을 제공한다. 악영향을 끼칠 수 있는 일부 명령을 특권 명령어(Privileged instructions)로 지정함으로써 이러한 보호를 달성한다.


운영 체제 자원 관리

Process Management

 프로세스는 실행 중인 프로그램을 의미한다. 간단하게 프로그램과 프로세스의 차이를 정의하자면 프로그램은 수동적 엔터티이고 프로세스는 능동적 엔터티이다. 프로세스는 시스템 내의 작업 단위이기도 하다. 프로세스는 작업을 수행하기 위해 CPU, 메모리, I/O 장치, 파일과 같은 리소스가 필요하다.
운영체제는 프로세스 관리와 관련하여 다음과 같은 일을 한다.

  • CPU의 스케줄링 프로세스
  • 프로세스 생성 및 삭제
  • 프로세스 동기화 메커니즘
  • 프로세스 간 통신 메커니즘
  • 교착 상태 처리

Memory Management

 운영체제는 메모리 관리와 관련하여 다음과 같은 일을 한다.

  • 메모리의 어떤 부분이 현재 누구에 의해 사용되고 있는지 추적
  • 필요에 따라 메모리 공간 할당 및 할당 해제
  • 메모리 안팎으로 이동할 프로세스와 데이터 결정

 가상 메모리 시스템(Virtual memory system)는 다양한 형태의 데이터 저장(DRAM 및 디스크)을 가상화하여 프로그램이 한 종류의 메모리인 "가상" 메모리만 있는 것처럼 설계할 수 있도록 한다.

Storage Management

 OS는 정보 저장에 대한 균일하고 논리적인 뷰를 제공한다.
 파일(File)은 논리적 저장 장치로 일반적으로 디렉토리로 구성된다.
파일 시스템(File system)는 데이터를 저장, 검색 및 업데이트하고 장치에서 사용 가능한 공간을 관리하는 것을 의미한다.

파일 시스템 활동(File system activities)

  • 파일 및 디렉토리 생성 및 삭제
  • 파일과 디렉토리를 조작하기 위한 프리미티브 지원
  • 보조 저장소에 파일 매핑

대용량 스토리지 관리(Mass-storage management)

  • 일반적으로 디스크는 데이터를 저장하는 데 사용된다.
  • 컴퓨터 작업의 전체 속도는 다음에 따라 달라진다.
  • 디스크 하위 시스템 및 해당 알고리즘

디스크 스토리지 활동(Disk storage activities)

  • 여유 공간 관리
  • 스토리지 할당
  • 디스크 스케줄링

I/O Subsystem

 OS의 한 가지 목적은 사용자로부터 하드웨어 장치의 특성을 숨기는 것이다. I/O 하위 시스템은 다음으로 구성된다.

  • 일반 장치 드라이버 인터페이스
  • 특정 하드웨어 장치용 드라이버
  • I/O의 메모리 관리
    • 버퍼링(Buffering)
    • 캐싱(Caching)
    • 스풀링(Spooling)

Special purpose system

실시간 시스템(Real time system) 엄격한 응답 시간 "Deadline" 요구된다. 실시간 시스템은 하드 또는 소프트일 수 있다.  E.g. 미사일 제어 시스템, 의료 장비 시스템.

멀티미디어 시스템(Multimedia systems) 소프트 실시간 요구된다. E.g. MP3 플레이어, DVD 플레이어, 화상 회의

모바일 시스템(Mobile systems) 낮은 H/W 능력(느린 프로세서, 제한된 메모리, 작은 디스플레이 화면, 제한된 전력)을 지녔다. E.g. 휴대폰


가상화(virtualization)

 가상화는 단일 컴퓨터의 하드웨어를 여러 가지 실행 환경으로 추상화하여 개별 환경이 자신만의 컴퓨터에서 실행되고 있다는 환상을 만들 수 있는 기술이다.

Virtual Machines

 가상 머신은 단일 컴퓨터를 여러 다른 실행 환경으로 추상화하여 각각의 개별 실행 환경이 자체 컴퓨터를 사용한다는 환상을 만든다. 하드웨어와 커널을 모두 하드웨어인 것처럼 취급한다.

가상머신의 특징

  • 시스템 리소스를 완벽하게 보호한다.
  • 리소스를 직접 공유하지 않는다.
  • 운영체제 개발이 편리하다.
  • 다른 운영 체제에서 응용 프로그램을 테스트하는 것이 편리하다.( E.g. 응용 프로그램을 Linux, FreeBSD 및 Windows 10에서 테스트하는 경우)

Vmware architecture


Open-Source Operating Systems

 무료 및 공개 소스 운영체제는 binary closed-source가 아닌 소스 코드 형식으로 제공되는 운영 체제이다. 복제 방지 및 디지털 저작권 관리(Digital Rights Management, DRM) 운동에 대한 대응으로 “copyleft” GNU 공개 라이선스(GPL)가 있는 Free Software Foundation(FSF)에서 시작되었다. E.g. GNU/Linux 및 BSD UNIX(Mac OS X의 핵심 포함) 등


핵심

  • 운영 체제는 응용 프로그램과 컴퓨터 하드웨어 사이의 중개자 역할을 하며 컴퓨터 하드웨어 리소스를 관리하고 응용 프로그램에 일부 서비스를 제공한다.
  • 인터럽트가 발생하면 CPU는 하던 일을 멈추고 인터럽트 서비스 루틴(ISR)을 호출한다.
  • 캐싱은 동일한 데이터의 향후 요청에 대한 액세스 속도를 향상하기 위해 더 빠른 저장 매체에 데이터를 저장한다.
  • 시분할 시스템에서 CPU는 사용자가 각 프로그램과 상호 작용할 수 있도록 프로그램을 자주 전환한다.
  • 운영 체제는 프로세스 관리, 메모리 관리, 파일 시스템, I/O 하위 시스템 등으로 구성된다.

주섬주섬

 운영체제를 이해하는 것은 프로그램을 작성하고 운영체제를 사용하는 사람들에게 매우 유용하기 때문에 컴퓨터 관련 종사자는 운영체제에 대해 이해하는 것이 좋다. 기본개념이 이렇게 긴 이유는 운영체제 전반적인 부분을 살짝 이야기하다 보니 길어졌다.^^

참고

 

Operating System | Operating System Computer System Organization Architecture OS Structure And Operations Process Memory Storage

Content:- What Operating Systems Do, Computer-System Organization, Computer-System Architecture, Operating-System Structure, Operating-System Operations, Process Management, Memory Management, Storage Management, Protection and Security, Distributed System

www.knowsh.com

"운영체제 "10판 <Abraham SilberschatzPeter Baer GalvinGreg Gagne 저자/박민규엮은이>

반응형

'컴퓨터공학 > 운영체제' 카테고리의 다른 글

OS 6. 동기화 도구(Synchronization Tools)  (0) 2023.04.06
OS 5. CPU 스케줄링  (0) 2023.04.06
OS 4. Threads& Concurrency  (0) 2023.04.05
OS 3. 프로세스 관리  (0) 2023.04.04
OS 2.운영 체제 구조  (0) 2023.04.03

댓글