[ What OS Do ]
Operating System
- is a sorftware that operates a computer system
- is a program running at all times on the computer
- provides system service to application program
- manages proecess, resources, UI, ...
컴퓨터는 크게 4개의 구성으로 나눌 수 있다. Hardware, OS, Application Programs, User.
사용자는 어플리케이션 프로그램을 사용하는데 이 프로그램을 실행시키는 과정에서 하드웨어 자원이 필요하게 되면 컴퓨터의 하드웨어에 직접적으로 접근하는 것이 아니라 OS를 통해 접근한다. OS는 어플리케이션 프로그램으로부터 요청을 받아 하드웨어를 이용해 필요한 동작을 실행한 후 그 결과(어플리케이션이 요구했던)를 프로그램에게 전달한다.
Kernel
kernel is core of operating system.
Along with the kernel, there are two types of programs: system programs, application programs
커널은 운영체제의 핵심이며, 일반적으로 운영체제와 커널은 동일시된다. (커널이 같다면 같은 운영체제로 취급한다.)
[ Computer-System Organization ]
현대의 일반적인 컴퓨터 시스템은 하나 이상의 CPU와 여러 개의 device controller로 구성되어 있다. CPU와 device controller는 하나의 common bus를 통해 연결되어 있으며, 이를 통해 메모리를 공유한다.
Bootstrap program
bootstrap program is the first program to run on computer power-on and then loads the operating system
현대의 컴퓨터는 CPU가 메모리에서 instruction을 fetch한 후 execute하는 폰 노이만 아키텍쳐를 기반으로 하고 있다. 즉 어떠한 프로그램을 실행시키기 위해서는 메모리에서 instruction을 fetch 해와야 한다. (OS 역시 프로그램이기 때문에 마찬가지이다.) 하지만 메모리는 volatile하기 때문에 컴퓨터의 전원이 켜졌을 때 메모리는 비어있다. 컴퓨터가 켜졌을 때 ROM이나 EEPROM에 저장되어 있는 bootstrap program이라는 초기화 프로그램을 실행시켜 메모리에 OS를 로딩한다. (OS가 메모리에 로딩되면, OS를 이용해 하드디스크에 저장되어 있는 다양한 프로그램을 메모리에 로딩해 사용할 수 있게 된다.)
Interrupt
장치 컨트롤러는 어떠한 이벤트가 발생했음을 CPU에게 알릴 수 있는데, 이렇게 신호를 이용해 이벤트 발생을 알리는 것으로 interrupt라고 한다. 보통 컴퓨터는 여러 작업을 처리하는데, 도중에 interrupt가 발생하게 되면, 커널은 하던 작업을 멈추고 interrupt를 처리한 뒤 기존의 작업을 이어 처리한다. 하드웨어에 의해 발생한 interrupt는 system bus를 통해 CPU에 신호를 보냄으로써 발생된다.
예를 들어 키보드로 입력을 받고 있다고 가정할 때, 'CTRL + C'키를 누르면 I/O request가 발생하고 되고 이 신호를 CPU에 전달한다. CPU는 전달받은 interrupt 신호를 처리하고(시그널 핸들러가 실행됨) 기존의 작업을 이어 처리한다.
(+) interrupt는 하드웨어나 소프트웨어에 의해 발생할 수 있으며, 소프트웨어에 의해 발생하는 interrupt를 Trap이라고 한다. 소프트웨어에 의해 발생하는 interrupt는 system call 명령어를 이용해 발생된다.
Von Neuman Architecture
- a stored-program computer
- a computer that stores programs in a memory
- typical isntrucion-execution cycle
- Instruction Fetch
: fetches an instruction from memory and stores the instruction in the instuction register - Instruction Decode
: the instruction is decoded - Operands Fetch
: fetches operands needed to execute the instruction from the memory and stores in some internal register - Instruction Execution
: execute the instruction using operands and sores the result back in the memory
- Instruction Fetch
폰 노이만 구조의 컴퓨터에서는 프로그램, 즉 instruction set이 메모리에 저장되어 있고, 메모리에서 instruction을 가져와 실행시킨다. 이러한 형태를 instruction-execution cycle이라고 한다. 프로그램, 즉 instruction set은 메모리에 저장되어 있으며, 프로그램이 실행되면 메모리에서 하나의 instruction을 가져와 instruction register에 저장한다.(instruction fetch) 가져온 instruction이 어떤 명령어인지 해석하고(instruction decode) 그 명령어를 실행시키기 위해 필요한 피연산자를 메모리에서 가져온다. 가져온 피연산자 값 역시 register에 저장한다.(operands fetch) 가져온 피연산자를 이용해 instruction을 실행시키고 그 결과를 다시 메모리에 저장한다. 이러한 과정을 프로그램의 모든 instruction에 대해 반복한다.
Sotrage Structure
위에서 언급한 바와 같이 프로그램은 메모리에 로드되어 있다. 이 메인 메모리를 RAM이라고 한다. 하지만 RAM은 모든 프로그램을 저장해두기엔 작고 비싸며, volatile하기 때문에 전원이 꺼지면 저장되어 있던 모든 데이터가 사라진다. 그러므로 SSD, hard disk와 같이 용량이 더 크고 저렴하며, non-volatile한 보조 기억장치를 필요로 한다.
기억장치에는 다양한 종류가 있으며, sotrage capacity, access time에 따라 계층이 나뉜다.
위로 올라갈수록 access time이 빠르며, storage capacity가 작다. register, cache, main memory(RAM)은 volatile 하며, SSD, hard disk, optical disk, manetic tapes는 non-volatile하다.
(+) register는 CPU 내에서 데이터를 기억하는 메모리 장치로, CPU 내에서 처리할 명령어나 연산에 필요한 피연산자 값, 연산 결과를 일시적으로 기억하는 장치이다. 기억장치 중 가장 빠르며 위에서 언급했던 instruction register는 다양한 register 중 현재 실행 중인 명령을 기억하는 register이다.
I/O Structure
컴퓨터는 다양한 I/O devieces 입출력 장치를 가지고 있으며, device controller가 각각의 장치를 담당한다. 또한 운영체제는 각각의 device controller를 제어하기 위한 device driver를 가지고 있다.
(+) DMA (Direct Memory Access Structure)
과거에는 device data를 처리하기 위해 CPU를 거쳐 메모리에 로드하는 방식을 사용했으나, 비효율적으로 사용되는 CPU자원을 줄이기 위해 장치와 메모리를 직접 연결하는 DMA를 사용한다.
[ Computer System Architecture ]
- CPU: the hardware that executes instructions
- processor: a physical chip that contains one or more CPUs
- core: the back computation unit of the CPU
Multiprocessor
- including multiple processors
- symetric multiprocessing (SMP)
: most common multiprocessor systems, in which each peer CPU processor performs all tasks
모든 프로세서들은 하나의 메모리를 공유하고, 동일한 작업을 병렬적으로 수행한다. 만약 프로세서에 이상이 생겨 작동을 멈춰야 한다면 다른 프로세서들에게 수행하던 작업을 나눠주고 재부팅한다. 재부팅 후 정상적으로 돌아오면 다시 작업을 나눠받아 수행한다.
Multicore
- including multiple computing cores on the same CPU
- with several cores on the same processor chip
하나의 프로세서 칩에 여러 개의 CPU core를 넣게 되면, CPU가 여러 개인 것처럭 동작할 수 있다. 또한 On-chip communication(칩 내부 통신)이 Between-chip communication(칩 간의 통신)보다 더 빠르기 때문에 훨씬 효율적이다. 이러한 이유로 최근 CPU는 multi core로 설계된다.
[ OS Operations ]
Multiprogramming
- runs more than one program at a time
- keeps several processes in memory simultaneously
- makes CPU untilization increase
과거에는 메모리에 하나의 프로그램만을 로드해두고 실행시킨 후 프로그램이 종료하면 메모리를 비우고 새로운 프로그램을 로드하는 방식이었다. 멀티프로그래밍은 여러 프로그램을 메모리에 로드해두고 한 번에 여러 개의 프로그램을 실행시키는 시스템이다. 이러한 시스템은 CPU의 사용효율을 높일 수 있다.
Multitasking / Time sharing
- a logical extension of multiprogramming
- CPU switches jobs so frequently that users can interact with each job while it is running
- CPU scheduling
멀티프로그래밍의 확장된 시스템으로 시분할 / 멀티태스킹 시스템이 있다. 여러 개의 프로세스들이 빠르게 번갈아가면서 실행되는데 사용자 입장에서는 마치 동시에 실행되는 것처럼 보이게 한다.
멀티태스킹 시스템은 여러 개의 프로세스를 어떤 순서로 처리할 지 결정하는 과정을 필요로 한다. 이 과정을 CPU scheculing이라고 한다.
Two separate mode if operations
- There are user mode and kernel mode
- ensures that an incorrect program cannot cause other programs to execute incorrectly
[ Modern Computer ]
Virtualization
하나의 하드웨어에 여러 개의 OS를 가상으로 만들어 각각 다른 실행 환경으로 사용할 수 있다.
The variety of computing environments
- traditional computing
- mobile computing
- client-server computing
- peer-ro-peer computing
- cloud computing
- real-time embedded systems
(+) 이런 다양한 환경에서 OS가 어떻게 잘 운영되도록 할 것인가가 최근 OS issue 이다.
[ OS Services ]
OS provides an environment for the execution of programs.
[ User and OS Interface ]
- CLI
: command line interface like shells (sh, bash, zsh, ...) - GUI
: graphical user interface like Windows, Aqua for MacOS, KDE/GNOME for Linux, ... - Touch-Screen Interface
: like Android UI, IPhone UI
UI(User interface)는 사용자와 컴퓨터 시스템이 만나는 지점을 말한다. CLI는 사용자가 텍스트 형태의 커맨드를 입력하는 방식으로 컴퓨터에 명령을 내린다. GUI의 경우 키보드 타이핑, 화면 클릭 등 다양한 방법으로 화면에 띄어진 그래픽을 조작하고 컴퓨터에 명령을 내린다.
[ System Calls ]
System calls provide an interface to the services made available by the OS.
OS API(Application Programming Interface)
OS 가 제공해주는 서비스를 system call을 통해 호출할 수 있다. 다시 말해 system call은 사용자 프로그램과 커널을 이어주는 역할이라고 할 수 있다.
예를 들어 컴퓨터 내에 저장되어 있는 어떤 한글파일을 연다고 가정하자. 한글파일은 디스크 내에 저장되어 있으므로 파일을 연다는 것은 파일 시스템 즉 하드웨어에 접근한다는 의미이다. 이를 위해서는 커널 모드로 전환되어야 하며, 이때 시스템 콜을 사용한다. 파일을 열기 위해서 open()이라는 시스템 콜을 사용한다.
시스템 콜에는 fork(), exit(), wait(), read(), open(), ... 등 다양한 함수가 있으며 이러한 함수들을 모아놓은 것이 unistd.h stdio.h 와 같은 표준 라이브러리(standard library)이다.
'CS > 운영체제' 카테고리의 다른 글
[OS] Synchronization (0) | 2023.04.24 |
---|---|
[OS] CPU Scheduling (0) | 2023.04.24 |
[OS] Thread (0) | 2023.04.20 |
[OS] Process (0) | 2023.04.19 |
[OS] signal (0) | 2023.04.10 |