01. 운영체제 (OS, Operation System)
가) 운영체제의 개요
- 하드웨어 자원을 관리하여 사용자나 응용 프로그램에게 컴퓨터 자원의 인터피이스를 제공하는 시스템 소프트웨어
- 사용 목적
추상화 | 하드웨어의 복잡성을 추상화시켜 표준화된 API제공 |
가상화 | 다중 프로세스, 다중 사용자 기능 제공 |
관리화 | 컴퓨터 자원의 제약사항을 만족하면서 성능 최대화 |
나) 운영체제의 주요 기능
자원관리 | 프로세스 관리 | - 사용자 프로세스, 시스템 프로세스 생성/폐기 - 프로세스 중지/재실행 - 프로세스 통신과 동기화 기법 제공 - 교착상태 방지 기법 제공 |
주기억장치 관리 | - 기억장치 공간과 사용자 추적 관리 - 기억공간 점유 프로세스 결정 - 기억공간 할당/회수 |
|
파일관리 | - 파일, 디렉토리 생성/폐기 - 파일과 디렉토리 관리 프리미티브 제공 - 보조 기억장치 매핑 - 비휘발성 저장 매체에 파일 저장 |
|
입출력 시스템 관리 | - 입출력 장치 인터페이스 (driver) | |
보조 기억장치 관리 | - 저장 장소, 공간 관리 - 디스크 스케줄링 |
|
시스템 관리 | 네트워킹 | - 네트워크 IF 제공 |
명령 해석기 시스템 | - 사용자 명령과 커널간 인터페이스 (shell) |
다) 주요 운영체제의 종류
구분 | 운영체제 | 설명 |
PC 운영체제 | 윈도우즈 (Windows) | - Microsoft 개발 - 안정적이고 표준적인 GUI - 다수의 3rd Party 프로그램 지원 |
맥OS (MacOS) | - Apple 개발 - 자사 하드웨어 최적화 |
|
모바일 운영체제 | 안드로이드 (Android) | - Google 개발 - 높은 개방성 - APK 파일을 이용하여 설치 가능 |
iOS | - Apple 개발 - 높은 보안성 - 앱스토어에서만 앱설치 가능 |
|
서버운영체제 | 유닉스 (UNIX) | - AT&T 개발 - 다중사용자 환경 지원 - 상용제품 위주로 가격이 비싸며 서버개발사마다 전용 유닉스 운영체제를 개발하여 탑재 |
리눅스 (Linux) | - 다양한 오픈 소스가 존재하며, 소스코드 공개 - 저비용으로 구축가능 - UNIX 호환 - RedHat, CentOS, Ubuntu, Fedora, Suse 등 |
|
윈도우서버 (Windows Server) | - Microsoft 개발 - Windows 인터페이스로 PC와 동일한 UI/UX 제공 - 지원되는 응용 프로그램이 다양함 |
02. 프로세스와 스레드
가) 프로세스(Process)의 이해
- 수행중인 프로그램, 시분할 시스템의 작업 단위
1) 프로세스의 상태
생성 | 프로세스가 생성되었으나 아직 운용체제에 의해 실행 가능하게 되지 못한 상태 |
준비 | 프로세스가 실행을 위해 CPU 할당 받기를 기다리는 상태 |
실행 | 프로세스가 CPU를 차지하고 있는 상태 |
종료 | 프로세스의 실행이 끝나고 CPU 할당이 해제된 상태 |
대기 | 프로세스가 실행상태에서 입출력 완려 등과 같은 어떤 사건이 발생해 주기를 기다리고 있는 상태 |
2) 프로세스제어블록 (PCB, Process Control Block)
정의 | 운영체제가 프로세스 관리를 위해 필요한 정보를 저장하는 운영체제 커널의 자료구조 |
생명주기 | 프로세스가 생성될때 PCB 생성, 프로세스가 종료될때 PCB 제거 |
포함 정보 | - PID, 프로세스 상태, 프로그램 카운터(PC), 스케줄링 우선순위, 레지스터 정보, 주기억장치 정보 등 - OS별로 상이 |
나) 프로세스 관리를 위한 기법
1) 프로세스 생성 (Process Creation)
- 병행 수행, 동적 생성/제거
- 프로세스 실행중 fork() 시스템호출을 통한 프로세스 생성 (부모, 자식 관계)
2) 프로세스 종료 (Process Termination)
- exit() 시스템후출을 통한 프로세스 삭제 요청
- 자식 프로세스는 wait() 시스템호출을 통해 부모 프로세스에게 자료 반환
다) 스레드(Thread)
1) 스레드 개념
- 중앙처리장치(CPU)를 사용하는 기본단위
- 경량 프로세스 (lightweight process)
- 기억장치 공유로 경제적인 문맥교환
2) 멀티스레드
- 하나의 프로세스가 점유한 메모리를 공유, 멀티스레드에서 같은 메모리 주소 접근 가능
- 프로세스보다 경제적인 스레드 생성과 문맥교환 비용
- 프로세스의 병렬성을 높여 멀티 프로세스를 활용 가능
03. 프로세스 동기화와 교착상태
가) 프로세스 동기화(Process Synchronization)의 개념
- 병행 프로세스가 동일 자료를 접근할 때, 하나의 프로세스만 자료를 조작하도록 보호하기 위한 프로세스 동기화
나) 임계구역(Critical Section) 문제
- 프로세스 동기화를 위해 동시 접근할 수 없는 임계구역의 범위와 수행을 정하는 것
- 임계구역 해결방안의 조건
상호배제 | 임계구역은 동시에 한개의 프로세스만 실행할 수 있다. |
진행 | 잔류 구역 프로세스만 임계구역에 진입할 수 있다. |
한정된 대기 | 임계구역 진입 대기시간은 한정적이어야 한다. |
다) 임계구역 문제 해결법
1) 인터럽트 제어
- 다중프로세스 환경에서 효율 감소
2) 세마포어
- S 변수, P연산(wait), V연산(signal) 을 통한 상호배제 구현
라) 교착상태
- 대기중인 프로세스가 요청한 자원이 다른 대기중인 프로세스에 의해 점유되어 프로세스 상태를 변경할 수 없는 상태
1) 교착상태 발생 조건
조건 | 내용 |
상호배제(Mutual Exclusion) | 한번에 하나의 프로세스만이 공유 자원을 사용할 수 있는 상태 |
점유 및 대기 (Hold & Wait) | 프로세스들이 현재의 자원을 점유하면서 다른 자원을 요구하는 상태 |
비선점 (Non-Preemption) | 각 프로세스에 할당된 자원은 사용이 완료될 때까지 강제로 해제할 수 없는 상태 |
환형 대기 (Circular Wait) | 서로 다른 프로세스 간의 자원요구가 연속적으로 반복되는 상태 |
2) 교착상태 해결 방안
조건 | 내용 |
예방(Prevention) | 교착상태의 발생조건을 제거하여 사전에 미리 예방하는 방법 |
회피(Avoidance) | 교착상태의 발생조건을 제거하지 않고, 다만 적절하게 피해 나가는 방법 |
발견(Detection) | 교착상태의 발생을 허용하고, 발생 시 원인을 찾아 해결하는 방법 |
회복(Recovery) | 교착상태에 빠진 프로세스를 재시작하거나 원래 상태로 되돌림으로써 교착상태를 해결하는 방법 |
04. 기억장치
가) 기억장치 관리의 이해
- 멀티 프로세스를 위해 기억장치에 여러 개의 프로세스 저장 필요
- 가상기억장치를 통해 대용량 프로그램 실행 가능
나) 기억장치 관리기법
1) 기억장치 할당 기법
구분 | 설명 |
최초 적합 | 가용공간 중 첫번째로 검색된 공간에 할당 빠른 할당, 단편화 부작용 |
최적 적합 | 가용공간 중 가장 작은 가용공간에 할당 |
최악 적합 | 가용공간 중 가중 큰 가용공간에 할당 최적 적합의 단편화보다 유용한 운용 가능 |
2) 단편화 문제
- 할당과 회수의 과정에서 사용하지 않고 낭비되는 부분적인 기억공간이 생기는 현상
- 최초, 최적, 최악 적합방식 : 외부 단편화 발생
- 고정크기 방식 : 내부 단편화 발생
3) 단편화 문제 해결방법
압축 (Compaction) 기법 |
- 외부단편화를 제거 - 작은 크기의 메모리 합병 - 구현 복잡, 큰 부하 |
|
통합 (Coalescing) 기법 |
- 인접한 미사용 공간 통합 |
05. 스케줄링
- 다중 프로그래밍 환경에서 CPU 활용의 극대화를 위한 프로세스를 CPU에 할당하는 것
가) 스케줄링의 목적
- 프로세스의 공정성
- 단위 시간 당 처리량의 최대화
- 반응시간의 최소화
- 예측 가능한 수행 시간
- 시스템의 과부하 방지
- 균형있는 자원 활용
- 프로세스 수행의 무한정 연기 방지
- 우선 순위제도 실시
나) 스케줄링 알고리즘의 종류 및 특징
종류 | 방법 | 특징 | 구분 |
FIFO (First In First Out) |
- CPU 요구 순서대로 할당 방식 | - 대화형에 부적합 - 반응속도 예측 가능 |
비선점 |
우선순위 (Priority) |
- 각 프로세스에 우선순위 부여, 높은 프로세스에 CPU 할당 방식 | - 고정적 우선순위 - 가변적 우선순위 - 구입된 우선순위 |
비선점 |
SJF (Shortest Job First) |
- 예상 작업시간이 짧은 프로세스에 CPU 할당 방식 | - 큰 작업은 상당 시간 소요됨 | 비선점 |
SRT (Shortest Remaining Time) |
- 수행 도중 남은 작업시간 추정치가 가장 적은 프로세스에 CPU 할당방식 - 선점형 SJF |
- 작업 처리는 SJF와 같으나 이론적으로 가작 적은 대기시간 | 선점 |
R-R (Round Robin) |
- FIFO + 정해진 시간만큼 사용후 반환 - 시분할 처리(TSS)에 적합 |
- 시분할 방식에 효과적 - 할당시간이 크면 FIFO와 같음 - 할당시간이 작으면 빈번한 문맥교환 |
선점 |
마감시간 (Deadline) |
- 제한된 시간내에 프로세스가 반드시 완료되도록 하는 방식 | - 마감시간 계산에 오버헤드 및 복잡성 발생 | 비선점 |
HRN (Highest Response-ratio Next) |
- SJF에서 큰 작업이 시간이 걸리는 점을 보완 | - 우선순위 = (대기시간+수행시간) / 수행시간 |
비선점 |
MLQ (Multi-Level Queue) |
- 서로 다른 작업을 각각 큐에서 타임 슬라이스에 의해 처리 | - 각각의 큐는 독자적인 스케줄링 알고리즘 사용 | 선점 |
MFO (Multi-Level Feedback Queue) |
- 하나의 준비상태 큐를 통하여 여러개의 피드백 큐에 걸쳐 처리 | - CPU와 IO 장치의 효율을 높일 수 있음 | 선점 |
06. 가상 기억장치
- 보조기억장치에 가상의 논리적 주기억장치 공간을 만들고, 사용시 주기억장치로 매핑하는 기술
가) 가상기억장치의 구현 기법
1) 페이징 기법
- 주기억장치와 가상기억장치를 각각 동일크기의 프레임과 페이지로 분할하여 프레임에 페이지를 적재시켜 실행하는 기법
2) 세그먼트 기법
- 가상기억장치에 보관되어있는 처리해야 할 작업을 다양한 크기의 세그먼트로 분할한 후 주기억장치에 적재시켜 실행하는 기법
나) 가상기억장치의 페이지 교체 기법
최적화 기법 (Optimal) |
- 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 기법 - 현실적으로 구현 불가 |
선입선출 (FIFO) | - 주기억장치에 적재된 순서를 추적하여 제일 처음 적제된 페이즈를 교체하는 기법 |
최소 최근 사용 기법 (LRU) |
- 가장 오랫동안 사용되지 않은 페이지를 교체하는 기법 |
최소 사용 빈도 (LFU) |
- 가장 적게 사용된 페이지를 교체하는 기법 |
최근 미사용 기법 (NRU) |
- 최근에 사용되지 않은 페이지를 참조하는 페이지를 교체하는 기법 |
다) 가상기억장치의 성능에 영향을 미치는 요인
지역성 (Locality) |
- 프로세스가 실행되는 동안 일부 페이지만 집중적으로 참조하는 성질 - 시간 지역성, 공간 지역성 |
워킹 셋 (Working Set) |
- 자주 참조하는 페이지 리스트의 집합 |
스래싱 (Thrashing) |
- 프로세스의 처리시간보다 페이지 교체시간이 더 많아지는 현상 - 다중프로그래밍의 정도를 줄이고, CPU 이용률을 높이거나 워킹셋 활용하여 해소 |
07. 파일 시스템
가) 파일 시스템의 이해
1) 파일의 개념
- 작성자에 의해 정의된 정보의 집합체로 이름을 가진 하나의 데이터 집합
2) 파일의 속성
이름 | 사람이 판독할 수 있는 형태 |
위치 | 파일이 존재하는 장치와 위치, 경로 |
크기 | 파일의 크기 (바이트, 워드 혹은 블록) |
보호 | 접근 제어 정보 (읽기,쓰기,실행) |
일시, 사용자 식별 |
생성, 최근 정보, 최근 사용 등의 내용 |
3) 디렉토리 개념
파일 탐색 | 사용자는 디렉토리 구조에서 탐색 가능 |
파일 생성 | 새로운 파일을 생성하여 디렉토리에 추가 |
파일 삭제 | 파일을 디렉토리에서 삭제 |
디렉토리 나열 | 디렉토리 파일들을 나열하고, 각 파일에 대한 디렉토리 항목의 내용을 보여줌 |
파일의 재명명 | 파일의 이름은 변경할 수 있어야 하고, 재명명된 파일은 변경된 디렉토리 구조내의 한 직점에 존재해야 함 |
나) 파일 시스템의 할당 방법
1) 연속할당
- 물리적인 디스크의 연속적인 주소들의 집합으로 배치
2) 연결할당
- 블록단위로 저장하고 각 블록은 리스트에 연결하여 관리하는 방법
3) 색인할당
- 파일의 모든 포인트 정보를 하나의 색인 블록으로 관리하는 방법
다) 운영체제별 파일 시스템의 종류
운영체제 | 파일시스템 |
유닉스 | Boot Block, Super Block, Bitmap Block, i-node, Data Block |
리눅스 | 확장파일시스템 (ext, ext2, ext3, ext4), ZFS, ResierFS, XFS |
솔라리스 | ZFS, UFS |
맥 OS | HFS, HFS+ |
윈도우 | FAT, NTFS |
라) 유닉스(UNIX)의 i-node
i-node 구성요소 | 내용 |
inode | - 한 파일이나 디렉토리의 모든 정보 포함 - 소유자 정보, 접근 정보, 파일 정보, 링크, 유형 |
inode table | - 한 파일 시스템에서 파일이나 디렉토리들의 전체 inode를 갖고 있는 체이블 |
i number | - inode가 i-list에 등록되는 entry number |
addressing | 블록위치 정도를 13개의 필드로 관리 * Direct data block 10개 (0~9) : 96KB * Single indirect data block 1개 (10) : 12MB * Double indirect data block 1개 (11) : 32GB * Triple indirect data block 1개 (12) : 70TB |
08. 입출력시스템
1) 입출력장치
- 실제 프로세서와 컴퓨터 사용자 간의 자료와 정보에 대한 입출력 수행
2) 입출력모듈
- 입출력 장치의 제어와 타이밍 조정, 프로세서와의 통신, 입출력장치들과의 통신, 데이터 버퍼링, 오류 검출 등의 기능 제공
'TOPCIT > TOPCIT교재' 카테고리의 다른 글
9. 클라우드 컴퓨팅 기술 - 문경숙 (0) | 2022.08.01 |
---|---|
5. 데이터 처리기술 - 안혜진 (1) | 2022.08.01 |
2. 네트워크 개념 - 이상희 (0) | 2022.08.01 |
1. 시스템 개념 - 황선환 (0) | 2022.08.01 |
XIII. 데이터베이스 분석 이해 - 이상희 (0) | 2022.07.27 |