참고 사이트
운영체제 01 운영체제의 개요 | KOCW 이화여대 반효경
https://m.blog.naver.com/ilikebigmac/222009981745
컴퓨터 시스템 구조
- 컴퓨터 내부 →HW
- CPU, Memory
- 외부(I/O device)
- i/o device: disk, mouse, keyboard etc. →HW
- i/o Controller: I/O device를 전담하는 작은 CPU 역할 →HW
- CPU의 요청을 컨트롤러가 대신 받아, I/O device에게 명령을 내린다.
- Device driver(장치구동기) →SW
- I/O Device를 인식하는 방법에 대한 내용이 적혀있는 파일
- OS가 driver 를 통해 I/O Device를 인식
i/o 작업은 많은 시간이 소요되므로, cpu역할을 하는 i/o Controller가 대신 i/o device에게 내리는 명령을 처리한다. 그동안의 cpu는 다른 프로세스와 일을 하면 된다
일반 Disk에는 일반적으로 컨트롤러가 없다.
서버의 마더보드에 컨트롤러가 있다.
스토리지에는 Disk + 컨트롤러 구성
사담이지만, 최근에 노트북 사용 중에 마우스가 스스로 좌클릭하는 현상이 일어났다....
마우스가 문제인 줄 알았는데 USB 뽑아도 그 현상이 계속 일어나길래..
드라이버가 문제구나 싶었다..... ㅠㅠ
Mode bit
사용자 모드(User mode, Mode bit = 0)
- CPU가 제한된 권한을 가진다.
- 프로세스가 오류를 일으켜도 시스템 전체에 영향을 미치지 않도록 격리
커널 모드 또는 슈퍼바이저 모드(Kernel Mode, Mode bit = 1)
- 특권 명령 가진다.
- CPU가 운영 체제 또는 시스템 소프트웨어가 실행되는 모드
- 커널 모드 또는 슈퍼바이저 모드에서 CPU는 시스템 리소스 및 하드웨어에 대한 무제한 액세스 권한을 가진다. 이 모드에서는 OS가 실행중이고, 하드웨어를 직접 제어하고 관리
** 사용자 프로그램에게 CPU를 넘기기 전에 Mode bit을 1로 셋팅
** Interrupt나 Exception 발생시 하드웨어가 Mode bit을 0로 셋팅
시스템 콜(System call)
- 사용자 프로그램이 전체 권한을 가진 OS의 서비스(도움)를 받기 위해 커널 함수를 호출하는 것.
- 모든 I/O는 특권 명령(프로그램 명령X, OS 명령 O)이다. 사용자 프로그램이 I/O에게 명령할 수 없으므로 OS에게 대신 부탁해야하므로, 스스로 OS에게 불러서 요청해야 한다.
- 프로그램이 스스로 Interrupt 발생시킨다.
- PC=0 OS를 실행하여 대신 I/O Controller에게 I/O 명령을 내린다.
OS
- 응용프로그램의 수행을 제어, 사용자와 하드웨어 간 인터페이스 역할
역할
- 확장성
- 다양한 HW(CPU, 모니터, I/O Device 등) 를 연결하기 위해 개발
- 프로그램 개발의 편의성
- HW 간 인터페이스 역할을 수행하여 HW를 이해하는 수고를 줄여줌
- 안정적인 하드웨어 자원 활용
- Multi-Tasking 등 CPU의 순차처리 방식의 효율적 활용
목적
- 컴퓨터 시스템의 한정된 자원을 효율적으로(최대한의 성능) 관리
- OS는 Resource Sharing을 할 수 있도록 한다.
- CPU 스케줄링: 실행중인 프로그램에게 짧은 시간씩 CPU를 번갈아 할당
- 어떤 프로그램에게 CPU를 사용하도록 줄까?
- 얼만큼(시간) 사용하도록 줄까?
- 무한정으로 쓰지 못하도록 하드웨어적인 장치 필요하다
- 메모리 관리: 한정된 메모리를 어떻게 쪼개어 쓰지?
- Interrupt, 캐싱: 빠른 CPU와 느린 I/O 장치 간 속도 차를 어떻게 극복하지?
구성요소
구성요소 | 설명 |
Kernel |
|
Shell |
|
FileSystem | 물리적 디스크의 용량을 효율적으로 사용하기 위한 데이터 구조 |
커널(Kernel)
- 프로세스 처리에 필요한 하드웨어 자원을 관리하는 OS의 핵심 부분
- 서버의 부팅 시부터 종료시까지 계속 메모리에 상주해있는 프로그램
역할
- 스케줄링
- 하드웨어 추상화(가상화): 어떤 회사에서 디스크를 만들었던지 똑같이 그 디스크를 사용할 수 있도록 종속되지 않기 위해 가상화 사용
- 보안: 사용자는 접근 못하도록 영역 분리
가상화 유형
HW 가상화 얼만큼 할거야?
Full Virtualization(전 가상화) | Para Virtualization(반 가상화) | |
대표 플랫폼 | VMWare | Xen |
모든 HW를 전부 가상화하여 논리적으로 쪼갬 | ||
CPU에서 가상화 지원되어 Binary Translation 가능 |
* 대표 플랫폼 둘 다 전 가상화, 반 가상화 모두 지원한다.
프로세스는 시스템 호출(System Call)을 통해 커널을 호출한다.
하드웨어는 인터럽트를 통해 커널에 신호를 보낸다.
구분 | 설명 |
단일형 커널(모놀리식 커널) |
|
마이크로 커널 |
|
혼합형 커널(하이브리드 커널) | 모놀리식커널 + 마이크로커널 |
커널 파라미터
- 커널에서 사용하는 변수
- Windows에서는 “레지스트리 값”이라고 부르며, 레지스트리 편집기에서 관리
커널 주소 공간
code: 함수 호출, 리턴 | data: 함수 내 전역 변수 | stack: 시스템콜, 인터럽트 처리 코드
PCB(Process Control Block): 현 프로세스 자료구조 관리 (프로세스10개=PCB 10)
사용자 프로그램이 사용하는 함수(function)
- 사용자 정의 하수
- 자신의 프로그램에서 정의한 함수
- 라이브러리 함수
- 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수
- 자신의 프로그램의 실행 파일에 포함되어있다.
- 커널 함수
- 운영체제 프로그램의 함수
- 커널 함수의 호출 = 시스템콜
Shell
구분 | OS | Shell |
CLI | Linux | Bourne Shell C Shell Korn Shell |
Windows | cmd.exe PowerShell |
|
GUI | Linux | X Windows |
Windows | 탐색기 |
파일 시스템
OS | fs | 설명 | 최대 크기 (fs) |
최대 크기 (file) |
최대 길이 (file name) |
Linux | ext4 |
|
약 1EB | 약 16TB | 255 Bytes |
xfs |
|
약 16EB | 약 8EB | 255 Bytes | |
Windows | FAT32 |
|
약 2TB | 약 4GB | 255 Bytes |
NTFS |
|
약 256TB | 약 16TB | 255 Bytes |
기능
- 메모리 관리: 한정된 메모리를 어떻게 쪼개어 쓰지?
- 빠른 CPU와 느린 I/O 장치 간 속도 차를 어떻게 극복하지? → Interrupt, 캐싱
- Interrupt
- CPU는 자기 일 하고, i/o 장치들이 작업 다 끝나면 CPU에게 인터럽트 걸어 작업종료를 알림. 인터럽트하면 무조건 CPU는 OS에게 돌아감.
- HW Interrupt: 하드웨어가 발생시킨 인터럽트
- SW Interrupt: Exception(프로그램이 오류 범함. ex 본인이 권한이 없는 명령어 실행), System call
- Interrupt
CPU 스케줄링
- 선입선출
- CPU, 디스크, 키보드는 큐에 줄을 서서 작업 처리
디스크 스왑
- 메모리가 꽉 찼을 때, 디스크를 메모리처럼 사용
메모리 관리
각각의 프로세스는 독립된 메모리 공간을 갖는다. OS만이 OS 메모리 영역과 사용자 메모리 영역의 접근에 제약받지 않는다.
'운영체제(OS) & Network' 카테고리의 다른 글
프로세스(Process) (1) (0) | 2023.09.18 |
---|---|
쓰레드(Thread) (0) | 2023.09.14 |
스케줄러(Scheduler) (0) | 2023.09.13 |
프로세스(Process) (2) (0) | 2023.09.13 |
데드락(Deadlock) (0) | 2023.09.05 |