Operating System
PART1. OS(Operating System)
1. 운영체제
정의
사용자와 하드웨어 사이에서 중간 중재자 역할을 하며 사용자의 요청에 따라 하드웨어를 제어하는 소프트웨어
목적
- 사용자와 컴퓨터 간의 인터페이스 제공
- 자원의 효율적 운영 및 자원 스케줄링
- 데이터 공유 및 주변 장치 관리
- 처리 능력도 및 신뢰도 향상, 사용 가능도 향상
2. 운영체제의 기능과 역할
기능
프로세스 관리, 메모리 관리, 파일 관리, 입출력 시스템 관리, 네트워크 관리, 자원 관리, 보안 관리
역할
사용자 - 프로그램 수행, 입출력 연산, 파일 시스템 조작, 통신, 오류 탐지 및 복원 시스템 - 자원 할당, Accounting, 보호
3. Windows OS의 Booting 순서
BIOS(Basic Input Output System)의 부팅 순서
전원 인가 > BIOS 구동 > POST(Power On Self Test) > Plug & Play 작업 > MBR(Master Boot Record) 읽기
윈도우 운영체제
Boot Load > Kernel Load > Sessiong Manager > Window Login
4. Process
개요
프로세스는 실행 중인 프로그램을 의미하며, 프로세스는 메모리에서 실행되는 프로그램의 인스턴스이다.
프로세서에 의해 수행되는 프로그램 단위로 현재 실행 중이거나 곧 실행 가능한 PCB(Process Control Block)를 가진 프로그램.
프로세스의 상태
실행(Running), 준비(Ready), 대기(Blocked) 상태로 나뉜다.
실행: 프로세서가 현재 실행 중인 상태
준비: 실행준비가 되어 프로세서가 할당되기를 기다리는 상태
대기: 입출력 종료와 같은 외부신호를 기다리는 상태
Dispatch: 대기 -> 실행, Wake up: 대기 -> 준비
프로세스와 스레드의 차이점
구분 프로세스 스레드 정의 APP의 실행 단위 PROCESS의 실행 단위 메모리 독립적인 메모리 공간을 가짐 (text, data, heap, stack) 같은 메모리 공간을 공유함 (stack만 독립적) CPU Overhead CPU 오버헤드가 큼 CPU 오버헤드가 적음
5. Thread
개요
자원 활용 및 처리량 증대를 위해 프로세스 내에서 실행되는 프로그랭밍 단위로, 프로세스 내에서 독립적으로 실행되는 흐름
스레드의 종류와 실행 구조
사용자 스레드(User Thread): 사용자 프로그램에서 생성한 스레드로, 커널에 의해 관리되지 않음
커널 스레드(Kernel Thread): 운영체제 커널에 의해 관리되는 스레드로, 커널이 직접 관리함
하드 웨어 스레드(Hardware Thread): CPU에서 지원하는 스레드로, 멀티코어 CPU에서 사용됨
m:1 모델: 여러 개의 사용자 스레드가 하나의 커널 스레드에 매핑되는 모델
1:1 모델: 하나의 사용자 스레드가 하나의 커널 스레드에 매핑되는 모델
m:n 모델: 여러 개의 사용자 스레드가 여러 개의 커널 스레드에 매핑되는 모델
6. Multi-Thread
7. 내부 단편화 외부 단편화
기억장치 분할기법의 정의
기억 장치를 효율적으로 관리하기 위해 기억 장치의 크기를 고정(일정)크기 또는 가변 크기로 나누는 기법
단편화의 종류
내부 단편화: 고정 크기로 나누었을 때 발생하는 단편화로, 할당된 메모리 공간이 프로그램이 필요로 하는 메모리 공간보다 클 때 발생함
외부 단편화: 가변 크기로 나누었을 때 발생하는 단편화로, 할당된 메모리 공간이 프로그램이 필요로 하는 메모리 공간보다 작을 때 발생함
8. Context Switching
문맥교환(Context Switching)의 정의
CPU가 한 프로세스의 실행을 중단하고 다른 프로세스를 실행하기 위해 프로세스의 상태를 저장하고 복원하는 과정
9. umask
정의
유닉스 및 리눅스 운영체제에서 파일이나 디렉토리를 생성할 때 기본적으로 설정되는 권한을 제어하는 명령어
역할
보안 측면 - 파일이나 디렉토리의 기본 권한을 설정하여 불필요한 접근을 차단함
시스템 관리 측면 - 파일이나 디렉토리의 기본 권한을 설정하여 시스템 자원을 효율적으로 관리함
1
2
3
# 파일은 기본적으로 666, 디렉토리는 777에서 umask 값을 뺀다.
umask 022 # 파일권한: rw-r--r--, 디렉토리 권한: rwxr-xr-x
umask 077 # 파일권한: rw-------, 디렉토리 권한: rwxr-----
10. Unix System Call
정의
사용자가 커널에 요청을 보내는 방법으로, 운영체제의 기능을 사용할 수 있도록 해주는 인터페이스
동작과정
사용자 프로그램 -> System Call Interface -> 커널 모드로 전환 -> 커널 서비스 호출 -> 시스템 콜 처리 -> 사용자 모드로 복귀
11. Unix File System의 개념, 구조, 툭징 및 inode 설명
정의
유닉스 운영체제에서 파일을 저장하고 관리하는 시스템으로, 파일과 디렉토리를 계층적으로 구성하여 데이터를 효율적으로 관리함
특징
계층적 구조: 트리구조, 단일 파일 구조(Root 디렉토리)에서 뻗어 나감 <br 파일 이름: 파일 이름과 확장자를 구분하지 않음 (“.”도 파일 이름의 일부로 취급)
파일 속성: 읽기, 쓰기, 실행 권한으로 구분
파일 권한: User, Group, Other 별 접근 권한 지정
구조
| Boot Block | Super Block | Inode list | Data Block | 부트 블록: 파일 시스템의 시작 부로, 커널 로딩과 관련된 정보가 저장됨
슈퍼 블록: 파일 시스템 전체에 대한 정보가 저장됨 <br체 아이노드 리스트: 각 파일에 대한 메타데이터를 저장하고 있는 inode들의 리스트
데이터 블록: 실제 데이터가 저장되는 블록
12. Application과 Kernel 통신방법에서 Non Blocked I/O와 Blocked I/O에 대해 비교
Blocked I/O: 프로세스가 I/O 작업을 요청하면 해당 작업이 완료될 때까지 프로세스가 대기하는 방식
Non Blocked I/O: 프로세스가 I/O 작업을 요청하면 해당 작업이 완료되지 않아도 프로세스가 계속 실행되는 방식 (프로세스는 일정 간격으로 I/O 작업의 상태를 확인하며 다른 작업을 수행함)
13. Application 프로그램과 Kernel 간 비동기 I/O(Asynchronous I/O) 제어 방식
프로세스 동작 중 I/O 작업을 요청하면 해당 작업이 완료될 때까지 대기하지 않고 다른 작업을 수행하는 방식
동작이 완료되면 프로세스에 알림을 주어 I/O 작업의 결과를 처리함
14. 마이크로 커널(Micro Kernel)과 모놀리틱 커널(Monolithic Kernel) 비교
구분 | 모놀리딕 커널 | 마이크로 커널 |
---|---|---|
정의 | 모든 운영체제 기능이 하나의 커널에 포함된 구조 | 최소한의 기능만을 가진 커널로, 나머지 기능은 사용자 공간에서 실행 |
장점 | 성능이 우수하고, 시스템 호출이 빠름 (컨텍스트 스위칭이 적음) | 커널 크기가 작고, 모듈화가 용이함 |
단점 | 커널 크기가 크고, 복잡함 | 성능이 떨어지고, 시스템 호출이 느림 |
예시 | 리눅스, 유닉스 | QNX, Minix |
모놀리틱 커널에서는 모든 핵심기능(파일 시스템, 메모리 관리, 네트워크스택, 디바이스 드라이버등)이 커널 모드에서 실행되며, 커널과 사용자 프로세스 간의 경계가 없음
마이크로 커널에서는 가장 기본적인 기능만 커널 모드에서 실행되고, 나머지 기능은 사용자 모드에서 실행됨
15. Cloud 운영체제, Open Stack
클라우드 운영체제(Cloud Operating System)는 물리적인 서버, 스토리지, 네트워크 등 분산된 인프라 자원을 가상화하고, 이들을 하나의 통합된 시스템처럼 관리·제어할 수 있도록 해주는 소프트웨어 플랫폼이다. OpenStack은 일종의 클라우드 운영체제로, 가상화된 컴퓨팅 자원(서버, 스토리지, 네트워크 등)을 관리하고 제어하는 오픈소스 소프트웨어이다.
16. Embedded OS의 특징과 기능
임베디드 시스템(Embedded System)?
특정한 기능(군사, 가전제품, 자동차, 의료기기 등)을 수행하기 위해 만들어진 소형 컴퓨터 시스템
임베디드 운영체제(Embedded OS)?
임베디드 시스템 위에서 동작하는 운영체제(OS)
특징
경량화 리소스 적게 씀 (메모리, 저장공간) 실시간 처리 빠르고 정해진 시간 내에 작업 완료 안정성 오랜 시간 무중단으로 동작 빠른 부팅 전원 켜자마자 바로 동작 가능 목적 특화 특정 기능만 수행하도록 최적화 소형 하드웨어 적은 자원에서도 구동 가능 하드웨어 밀접 하드웨어 자원 직접 제어 커스터마이징 가능 OS 기능을 자유롭게 조절 가능