-
Chapter 1(Introduction) & 2(System Structures)운영체제(OS) 2022. 10. 10. 01:35728x90
운영체제 란??
user computer 와 computer hardware 를 매개하는 프로그램입니다.
운영체제의 역할은 크게 2가지로 나뉘는데
사용자 관점(User View) 와 시스템 관점 (System View)로 나뉠 수 있습니다.
User View
사용자가 컴퓨터를 쉽게 이해하고 또한 컴퓨터의 자원 사용(Resource utilization)을 신경쓰지 않게
도웁니다. 즉, 사용자에게 편의를 제공해줍니다.
System View
시스템 관점에서 운영체제를 보면 자원 할당자(Resource Allocator) 입니다.
자원을 사용하는데 발생되는 충돌(conflict)을 효율적이고 공평하게 배분합니다.
또한 운영체제는 컴퓨터 자원들을 관리하는 제어 프로그램(Control Program)으로서 동작합니다.
kernel 은 유일하게 컴퓨터에서 항상 작동하는 프로그램 입니다.
즉, 운영체제의 핵심입니다.
Compter-System Organization
일반적인 컴퓨터 구성은 여러개의 CPU와 Divice controller로 이루어져
그들은 공통 버스(common bus = address, data, control)로 연결되 있어 메모리를 공유합니다.
Computer-System Operation
I/O device와 CPU는 동시에 실행될 수 있습니다.
각 device는 local buffer를 가집니다.
CPU는 data를 메인메모리 부터 local buffer로 옮기고
data를 local buffer로 부터 메인메모리로 옮기는 작업을 합니다.
Device controller는 CPU에게 이벤트가 발생했다는 것을 알리는데
이를 interrupt 라고 합니다.
컴퓨터가 여러작업을 동시에 처리하다가 interrupt가 발생하면 진행중인 작업을 잠시 멈추고
interrupt를 처리하고 다시 돌아옵니다.
Interrupt Handling
HW
HW에서는 systemp bus를 통해 CPU에 신호를 보내고
interrupt를 발생시킵니다.
I/O device에는 IRQ(Interrupt ReQuest line)을 가지고 있는데 이는
CPU에게 interrupt를 발생시키기 위해
PIC(Programmable(제어, 조작 할 수 있는) Interrupt Controller)에 의해 mapping 되어 있습니다.
SW
SW에서는 system call 이라는 특별한 명령으로 interrupt를 발생시킵니다.
CPU에서 interrupt 신호를 받으면 하던 일을 잠시 멈추고 메모리 상의 어떤 고정된 위치를
찾습니다.
이 위치는 Interrupt vector 에 저장되 있습니다.
이러한 interrupt vector는 해당 interrupt를 처리할 수 있는 service routine 들의
주소를 가지고 있는 공간으로, 파일 읽기, 쓰기 와 같은 중요한 동작들이 hard coding 되어 있습니다.
trap(or exceptrion) 는 에러 또는 user의 요청(system call 또는 monitor call)에
의해 발생되는 sw에 의해 발생되는 interrupt 입니다.
Storage Structure
처음에 컴퓨터가 켜지면 부트스트랩 프로그램(Bootstrap program) 이라는 초기화 프로그램이 실행되고
kernel이 load되면 실행기(Executor)를 통해 프로그램을 실행시킵니다.
실행기는 기억장치(Storage)에서 exe 파일을 가져오고 kernel이 이를 메모리에 할당해 실행시킵니다.
1. Main memory
이처럼 모든 프로그램들은 메인메모리에서 load 되어 실행되며 보통 RAM 이라고 부릅니다.
램은 모든 프로그램을 담기에 작고 비싸며 컴퓨터가 꺼지면 저장된 data가 모두 날라가버리는
volatile(휘발성)장치 입니다.
2. Secondary storage
그래서 secondary storage(보조 기억 장치)가 필요합니다.
흔히 자주 쓰는 ssd가 한 예시 입니다.
이는 Non-volatile(비 휘발성) 입니다.
용량이 크고 저렴 하다는 장점이 있습니다.
3. Hard disks
디스크는 논리적으로 track으로 나뉘며, track은 sector로 나뉩니다.
최근에는 컴퓨터 절전모드로 들어가면 모든 데이터를 secondary storage로 dump 해서
담아두고 다시 절전모드에서 빠져 나오면 dump 해둔 데이터를 불러와서 작업을 다시 실행합니다.
이른 Hibernate라고 합니다.
1KB = 1024 byte
1MB = (1024)^2 byte = 약 1000KB
1GB = (1024)^3 byte = 약 1000MB
1TB = (1024)^4 byte = 약 1000GB
1PB = (1024)^5 byte = 약 1000TB
Migration of A from Disk to Register
A 라는 데이터가 disk 로부터 register로 이동하는 과정이다.
Multitasking
multitasking 환경에서는 storage hierarchy에서 저장되는 위치에 관계없이
최신 값을 사용하도록 주의해야 합니다. (변수 값이 달라질 수 있음)
Multiprocessor
멀티프로세서 환경은 모든 CPU가 캐시에서 최신 값을 가질 수 있도록
하드웨어에 캐시 일관성을 제공해야 한다. (local 변수 많이 사용, global 변수 사용 주의)
Distributed분산 환경은 더 복잡합니다. (여러개의 컴퓨터)Direct Memory Access Structure
CPU를 거쳐 메모리에 load 하는 방식 대신 device와 메모리를 직접 연결하는 방식입니다.
이는 bus가 지원합니다.
Device controller 가 데이터 block 들을 buffer 저장소에서 main memory로 CPU 개입없이
전달합니다.
나중에 CPU 에서는 데이터 이동이 완료되었다는 interrupt만 1번 일어납니다.
결국 CPU가 하는 일이 줄어들어 성능이 좋아집니다.
Concept of Multiprogramming
여러 프로그램을 메모리에 load 해 두고 한 process가 대기상태가 되면
다른 process의 작업을 수행하는 시스템입니다.
하나의 작업은 job scheduling을 통해 선택 되고 실행되어집니다.
I/O 작업 등의 종료를 대기할 동안 OS는 하나의 CPU에서 다른 job을 수행할 수 있도록
합니다.
Concept of Multitasking(Timesharing)
process 마다 작업시간을 정해두고 번갈아가면서 작업하는 방식입니다.
task 란 OS에서 처리하는 작업의 단위 또는 정해진 일을 수행하기 위한 명령어 집합을 의미합니다.
(process 보다 확장된 개념입니다.)
여러개의 task를 자주 번갈아가며 수행하다보니 사용자는 동시에 여러 task가 수행되고 있다고
느끼게 됩니다.
multiprogramming 과 multitasking 은 여러 job들을 동시에 메모리에 올리는 방식입니다.
이럴경우 메모리에 자리가 없는 경우를 고려해 어떤 작업을 먼저 처리할지 정해야합니다.
이러한 과정을 Job scheduling 이라고 합니다.
OS Operation for Protection
잘 design된 OS는 틀린 프로그램이 다른 프로그램으로 부터 방해하지 못하게 해야합니다.
이를 위해 총 4가지 방지책을 사용합니다.
1) Dual-Mode Operation
사용자가 사용하는 program이 함부로 시스템에 접근하지 못하도록 두개의 mode로 나눕니다.
user mode와 kernel mode가 그것이며 mode bit가 1이면 user, 0이면 kernel 입니다.
HW는 kernel mode 일때만 특권(priviledge)명령을 실행합니다.
user mode에서 kernel mode의 기능을 호출하고 싶으면 system call 이라는 인터페이스를 사용해야합니다.
2) I/O and Memory Protection
모든 I/O 명령들은 특권 명령(privileged instruction) 입니다.
적어도 interrupt vector와 interrupt service routine(즉, 실행의 일부로 인터럽트 벡터에 새 주소를 저장하는 사용자 프로그램)에 대한메모리 보호를 제공해야 합니다.메모리 보호를 위해 프로그램이 접근할 수 있는 합법적인 주소 범위를 결정하는두개의 register가 있습니다.Base register가장 작은 합법적인 physical 메모리 주소를 hold 합니다.Limit register메모리 주소의 범위의 크기를 포함합니다.정의 된 범위를 벗어나는 memory는 보호됩니다.3) Timer
사용자의 program이 control를 OS 에게 넘겨주지 않는 상황을 대비합니다.특정 주기에 interrupt를 발생시킵니다.OS는 카운터를 설정하고 매 clock tick을 감소시킵니다. 그러다 카운터가 0에 도달하게 되면interrupt가 발생합니다.OS Services and System Calls
os는 user와 system 에게 다양한 서비스를 제공합니다.
- User Interface
말 그대로 컴퓨터와 사용자가 만나는 지점을 의미합니다.
크게 GUI, batch, CLI 로 나눌 수 있다.
CLI는 명령어 텍스트 중심으로 컴퓨터와 대화하는 것이다.
batch는 명령을 file에 넣어두고 file이 실행될 때 마다 명령을 실행하는 것이다.
GUI는 현재 가장 많이 사용하는 인터페이스로 그래픽이나 아이콘 중심으로 표현하는 인터페이스이다.
- Program Excution
system은 프로그램을 메모리에 load하고, 이를 실행해야 합니다.
- I/O operation
안전성을 위해 os는 사용자가 직접 입출력 장치를 조작하지 않고, os를 거치도록 해야 합니다.
- File - system
파일을 읽고 씁니다. 또는 사용자가 파일에 접근하지 못하도록 막습니다.
- Communication
어느 한 process에서 다른 process로 부터 정보를 교환할 경우
os는 공유메모리(shared memory) 나 메시지 패싱(message passing)을 사용합니다.
공유 메모리는 여러개의 process가 메모리 한 부분을 공유하도록 하는 것이고
메시지 패싱은 process 끼리 정보 패킷(packet)을 주고 받는 것을 의미합니다.
- Error detection
os는 하드웨어나 프로그램 에서 일어나는 에러를 잡아야 합니다.
- Resource allocation
여러 사용자나 동시에 작업을 진행할 때 os는 컴퓨팅 자원을 잘 배분해야 합니다.
- Accounting
사용자가 어떤 자원을 자주, 계속 사용되는지 알아야 합니다.
- Protection and Security
위에서 본것같이 안전성과 보안을 철저히 해야합니다.
API - System Call - OS 관계
user mode에 서 kernel mode로 전환할 경우 system call을 거쳐야 합니다.
메모리의 특정 주소 범위에는 어떤 동작들이 할당되어 있는데 이를 system call table 이라고 합니다.
또는 interrupt vector 라고 합니다.
시스템 콜에는 fork() 나 excve(), open() 같은 함수들이 있습니다. 하지만 사용자가
직접 이러한 함수를 사용하는 것은 위험하므로 표준 라이브러리(stdio.h) 같은 함수들을 사용합니다.
Types of System Calls
시스템 콜은 6가지로 분류할 수 있습니다.
1) Process control
end, abort, load, execute
2) File mangement
create, delete, open, write, close, read
3) Device management
read, write request, release
4) Infromation maintenance (정보 유지)
get, set time, date, process, file
5) Communications
send/receive message, transfer status
6) Protection
Kernel Data Structures
kernel 자료구조에는 List, Stacks, Queue, Trees, Hash, Bitmap 이 있습니다.
특히 트리는 자주 사용됩니다.
System Boot
처음에 컴퓨터를 키면 ROM(Read-Only-Memory)에 저장되 있는 Bootstrap program 이라는
초기화 프로그램이 실행됩니다.
Bootstrap program은 시스템을 초기화하고 Boot loader를 실행합니다.
부트스트랩 로더(ROM에서)는 진단(즉, POST)을 실행하며
디스크에서 고정된 위치의 단일 블록을 읽고 코드를 실행할 수 있는 코드를 가지고 있습니다.
부트 블록의 프로그램은 주소 및 길이 정보를 기반으로
전체 OS를 로드하거나 디스크에서 부트스트랩 프로그램의 나머지를 읽습니다.
Operating System Structure (UNIX)
UNIX OS는 2가지로 구성되어집니다.
1) Systems programs
2) Kernel
system call interface 밑의 부분과 물리적 hardware 위의 부분을 가지고 있습니다.
파일 시스템, CPU 스케줄링, 메모리 관리 및 기타 운영 체제 기능을 제공합니다.
Operating System Structure (Microkernel)
마이크로 커널은 커널에서 핵심적인 요소만 남긴 가벼운 커널입니다.
커널이 커질 수록 관리해야하는 부분이 많고 문제가 생길 가능성이 높기 때문에
더 가볍게 만들어야 합니다.
마이크로 커널은 코드 양이 적고 컴파일 시간도 비교적 짧고 다른 시스템이 이식(porting) 하기도 쉽습니다.
Virtual Machine(VM)
virtual machine은 단일 컴퓨터의 하드웨어를 여러 다른 실행 환경으로 abstract(추상화)함으로써각각의 개별 실행 환경이 자체 개인 컴퓨터(system virtual machine이라고도 함)를 실행하고 있는 것처럼착각하게 만듭니다.장점
가상 시스템 개념은 각 가상 시스템이 다른 모든 가상 시스템과 분리되므로
시스템 리소스를 완벽하게 보호합니다.
그러나 이러한 격리는 리소스를 직접 공유할 수 없습니다.가상 머신 시스템은 운영 체제 연구 및 개발을 위한 완벽한 수단입니다.
시스템 개발은 물리적 시스템이 아닌 가상 시스템에서 수행되므로정상적인 시스템 작업을 중단하지 않습니다.
복제도 가능합니다(예: 단일 시스템에서 여러 Pintos를 실행하는 것).가상 시스템은 시스템 통합을 사용할 수 있으며, 여기에는 두 개 이상의 개별 시스템을
가져와 하나의 시스템안에 있는 가상 시스템에서 실행하는 작업이 포함됩니다.
가볍게 사용하는 시스템을 결합하여 많이 사용하는 시스템 하나를 만들 수 있으므로리소스 최적화가 가능합니다.>> CPU 활용률이 향상됩니다.
Native VM vs Hosted VM
Native VM
가상 시스템 모니터는 기본 시스템에서 직접 실행됩니다.Hosted VM
가상 시스템 모니터 또는 system emulator는호스트 OS(예: VMware 워크스테이션, MS의 Virtual Server, VirtualBox, Bochs, Qemu 등)에서 실행됩니다.'운영체제(OS)' 카테고리의 다른 글
Chapter 9 (Main Memory) (0) 2022.11.21 Chapter 5 (CPU Scheduling) (0) 2022.10.26 Chapter 6 - 7 (Synchronization Tools and Examples) (0) 2022.10.22 Chapter 4 (Thread and Concurrency) (0) 2022.10.19 Chapter 3 (Processes) (0) 2022.10.11