일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- supervised learning
- LG Aimers
- OpenAI
- 머신러닝
- 딥러닝
- 회귀
- ChatGPT
- regression
- LLM
- LG
- 티스토리챌린지
- PCA
- LG Aimers 4th
- Classification
- 지도학습
- 해커톤
- AI
- Machine Learning
- 분류
- GPT-4
- 오블완
- gpt
- deep learning
Archives
- Today
- Total
SYDev
[운영체제] Chapter 2. Operating System Structures 본문
경희대학교 허선영 교수님의 운영체제 수업을 기반으로 정리한 글입니다.
How Operating Systems Interact with Hardware?
- OS가 hardware와 소통하는 방식 -> Interrupts
Device Controller
- 각각의 특정한 device type을 담당하는 device controller가 존재 -> device를 controll
- ex) disk controller, USB controller, graphics adapter
- 이런 device controller들은 common bus에 의해 연결되고, common bus를 통해 shared memory에 접근 가능 -> common bus를 통해 신호를 주고받음
- OS는 각각의 device controller에 device driver 보유 -> OS에 내장된 software
Interrupts
- device controller는 operation이 끝나면 CPU에 interrupt 신호를 전송
- interrupt의 type에 따라 -> interrupt vector에 기반하여 interrupt-specific handler가 호출됨
I/O device
- transferring data -> busy
- idle -> 휴식 상태
- transferring이 완료되면 다시 idle 상태로 복귀 -> CPU에 interrupt 전송
CPU
- 평상시에는 user program을 실행
- Interrupt 수신 시 -> interrupt type에 알맞은 interrupt handling 수행
- interrupt handling 완료 -> 다시 user program 작업으로 복귀
Interrupt Vector
- Interrupt Vector: interrupting device에 알맞은 interrupt service routine의 주소를 가진 공간
- Interrupt Vecotr Table: interrupt vector들이 저장되어 있는 영역
- pc의 전원이 켜져 부팅될 때, OS는 interrupt vector table 값을 초기화
Interrupts - Implementation
-> maskable interrupts: 받아들일지 말지 결정 가능
-> non-maskable interrupts: 무시 불가능 -> 매우 중요한 interrupts(ex: 정전, 하드웨어 고장)
Hardware
- Hardware Interrupts: hardware events에 대한 response -> 외부 hardware device가 보낸 신호
- ex) IRQ
- CPU는 보통 1~2개의 IRP(Interrupt Request Pin)을 가짐 -> 많은 I/O divice와 상호작용하기 위해 이를 중계하는 매개체가 필요
- Programmable Interrupt Controller(PIC): interrupt-driven system에서 다른 I/O 장치들에 대한 대표성을 가지고 CPU에 연결되며, 전반적인 manager 역할 수행
- PIC는 다수의 interrupt pin을 가짐 -> 다수의 I/O devices가 연결되고, PIC가 다시 CPU의 interrupt pin에 직접 연결됨
- ex) intel 8259A PIC: 8개의 IRQ pin 존재 -> 8개만으로는 모든 I/O devices 커버 불가능 -> 여러 개를 직렬로 연결하여 사용
Software
- Software Interrupts(exceptions): software events에 대한 response -> CPU의 software 내부에서 발생하는 interrupts
- ex) three types of software exceptions in x86: faults, traps, aborts
- device driver가 interrupt를 초기화(신호를 수신하기 전), CPU는 interrupt 신호를 수시로 check
- I/O request가 발생하면, device driver를 통해서 해당 device controller에 명령을 전달
- device controller가 명령받은 동작을 수행
- 작업이 끝나면 interrupt 신호를 CPU에 전달(Interrupt line에 쌓음)
- OS가 Interrupt line에 interrupt를 수신 -> 실행 중인 process를 멈추고 interrupt handling 작업 실시
CPU's Interrupt Request Line(IRQ Line)
- IRQ Line을 통해서 interrupt request 요청을 수신
- 각각의 IRQ Line은 index를 가짐 -> index에 따라 interrupt vector 번호가 매칭됨
Programmable Interrupt Controller(PIC)
-> PIC의 legacy 형태
-> 현대의 PIC는 northbridge와 southbridge가 통합된 chipset을 포함한 형태
- CPU와 device controller가 포함된 chipset이 연결됨
- Chipset과 devices 연결됨
How Operating Systems Interact with Software?
- program에서는 OS가 제공하는 service를 system call을 이용하여 사용 가능
Operating System Services
- OS가 제공하는 services를 프로그램이 이용하려면 system call에 요청해야 함
System Calls
- System Call: OS의 kernel이 제공하는 service에 대해, program의 요청에 따라 kernel에 접근하기 위한 interface
- C나 C++같은 고급 언어로 작성된 programs -> 직접 system call 호출 불가능 -> high-level API(Application Programming Interface)를 통해 syscall에 접근
-> user는 high-level language에서 그저 함수 호출만 하면 system call이 발생
Example: Standard C Libarary
- kernel mode의 write() system call에, C program의 printf() function을 호출함으로써 접근
System Calls - Implementation
- 각각의 system calls는 번호를 가짐
- System-call interface -> 이런 번호를 포함한 table을 가짐
- caller는 system call 내부에서 어떤 동작을 하는지 알 필요가 없다!! -> 무슨 기능을 하는지만 알면 됨
Example: Handling of the open() system call
- User application이 open() (number 2) system call 호출
- kernel mode에서는 system call table의 2번째 entry(sys_open) 호출
- 해당 함수 return value를 다시 user에게 반환
System Calls - Parameter Passing
- 기본 param을 제외한 추가 parameters가 필요할 수 있음
- OS에는 parameter를 전달하는 3가지 방법이 있음 -> Simplest, Block, Stack
Simplest
- registers로 parameter 전달
- register 개수가 한정적 -> register 개수보다 많은 parameter 전달 불가
- 상대적으로 속도는 빠르나, 많은 parameter를 전달받지 못함
Block
- in block or table
- in memory
- parameter가 저장된 block의 주소를 register에 저장
- 상대적으로 많은 param 전달 가능, but 상대적으로 속도가 떨어짐
Stack
- stack에 parameter 위치함 -> program에 의해 pushed, os에 의해 popped off off
Types of System Calls
Process Control
- create process, terminate process
- end, abort
- load, execute
- get process attributes, set process attributes
- wait for time
- wait event, signal event
- allocate and free memory
- dump memory if error
- debugger for determining bugs, single step execution
- locks for managing access to shared data between processes
File Management
- create file, delete file
- open, close file
- read, write, reposition
- get and set file attributes
Device Management
- request device, release device
- read, write, reposition
- get device attributes, set device attributes
- logically attach or detach devices
Information maintenance
- get time or date, set time or date
- get system data, set system data
- get and set process, file, or device attributes
Communications
- create, delete communication connection
- send, receive message if message passing model to host name or process name
- From client to server
- shared-memory model create and gain access to memory regions
- transfer status information
- attach and detach remote devices
Protection
- control access to resources
- get and set permissions
- allow and deny user access
Operating System Structure
- General-purpose OS - very large program
- Simple structure - MS-DOS
- More Complex - UNIX
- Layered - an abstraction
- Microkernel - Mach
Monolithic Structure - Original UNIX
- Monolithic Structure: kernel의 모든 기능을 single address space에 위치한 single, static binary file에 위치
- Tightly Coupled System: 동일 운영체제 하에 여러 개의 프로세스가 하나의 메모리를 공유하여 사용하는 시스템
- UNIX OS는 2가지 part로 이뤄짐
- System Programs
- Kernel: system-call interface & physical hardware 사이에 있는 모든 것
- system call interface와 kernel이 하나로 합쳐져 있기 때문에 overhead가 적음
Unix and Linux System Structure
Layered Approach
- 몇 개의 layers(levels)로 나눠진 구조
- Bottom layer(layer 0): Hardware, Highest(layer N): User interface
- 각각의 layer는 functions(operations)와 services 사용(오직 lower-level layers)
- computer networks & web applications에서 성공적으로 사용됨
Advantages
- Easy to design and implement-> layer마다 design
- debugging and system verification을 단순화 -> layer마다
Drawbacks
- 상대적으로 아쉬운 성능
Microkernels
- kernel에서 가능한 한 많은 부분을 user space로 이동
- ex) Mach
- user modules 사이에 communication이 위치 -> message passing 이용
Advantages
- microkernel을 확장하기 쉬워짐
- os를 새로운 architectures에 적용하기 쉬워짐
- more reliable & secure
Drawbacks
- kernel space와 user space 사이의 통신으로 인한 overhead
참고자료
'3학년 2학기 전공 > 운영체제' 카테고리의 다른 글
[운영체제] Chapter 5. CPU Scheduling (5) | 2024.10.09 |
---|---|
[운영체제] Chapter 4. Thread & Concurrency (1) | 2024.10.01 |
[운영체제] Chapter 3. Processes (4) | 2024.09.24 |
[운영체제] Exercise 1 (1) | 2024.09.14 |
[운영체제] Chapter 1. Introduction (0) | 2024.09.10 |