[TOPCIT 목차]

 

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별로 상이

  나) 프로세스 관리를 위한 기법

UNIX 운영체제의 프로세스 생성과 종료

    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) 입출력모듈

    - 입출력 장치의 제어와 타이밍 조정, 프로세서와의 통신, 입출력장치들과의 통신, 데이터 버퍼링, 오류 검출 등의 기능 제공

+ Recent posts