본문 바로가기
Data Analysis/정보처리기사

[4과목 프로그래밍 언어 활용] 02. 운영체제 기초 활용

by suvii 2024. 4. 19.

[Sec 1. 시스템 소프트웨어]

  • 시스템 소프트웨어의 구성
    • 제어 프로그램 (감작데이) : 감시 프로그램, 작업 관리 프로그램, 데이터 관리 프로그램
    • 처리 프로그램 : 서비스 프로그램, 문제 프로그램, 언어 번역 프로그램

 

[Sec 2. 운영체제]

  • 기능 : 프로세스 관리, 메모리 관리, 파일 관리 등
  • 운용 기법
    • 일괄 처리 시스템(여러 작업 묶어서)
    • 실시간 처리 시스템(즉시 수행)
    • 다중 프로그래밍 시스템(하나의 CPU로 여러 프로그램)
    • 시분할 시스템(정해진 시간동안)
    • 다중 처리 시스템(여러 CPU, 병렬)
    • 다중 모드 시스템(다양한 운용 기법 혼용)
    • 분산 처리 시스템(여러 독립된 시스템 연결)
  • 종류 : 윈도우(Windows), 리눅스(Linux), 유닉스(Unix), MacOS
    • 유닉스 구성 : 사용자 > 쉘(명령어 해석) > 커널(실제 일처리, 핵심)
    • 유닉스 파일 시스템
      • 특징 : 트리 구조
      • 구조 : 부트 블록(부팅 시), 슈퍼 블록(전체 정보), I-node 블록(저장 위치), 데이터 블록(실데이터)
      • 파일 디스크립터(FD) : 유닉스 시스템에서 프로세스가 파일에 접근할 때 사용
    • 리눅스, 유닉스 파일 접근 권한 관리
      • Type(1) / Owner(3) / Group(3) / Other(3)
      • R(4) : 읽기 권한 / W(2) : 쓰기 권한 / X(1) : 실행 권한 / -(0) : 권한 없음
      • umask(접근 권한 마스크) : 새로 만들어질 파일에서 제거될 권한을 명시
      • chown(소유주 변경)

 

[Sec 3. 메모리 관리]

  • 기억장치 관리 전략
    • 반입(Fetch) 전략 : 요구 반입(필요로 할 때), 예상 반입(사용 예상 시)
    • 배치(Placement) 전략 : 최초 적합, 최적 적합(단편화 최소화), 최악 적합(단편화 최대화)
    • 교체(Replacement) 전략 : FIFO, OPT, LRU, LFU, NUR, SCR 등
  • 단편화
    • 종류 : 내부 단편화(할당 후 남아있는 공간), 외부 단편화(할당되지 못해 남아있는 전체 공간)
    • 해결 방법 : 통합 기법(인접한 공간 통합), 압축 기법(분산된 공간 통합), 재배치 기법(새로운 주소에 배치)

 

[Sec 4. 가상기억장치]

가상 기억 장치 : 보조기억장치의 일부를 주기억장치처럼 사용하는 기법

  • 블록 분할 방법
    • 페이징(Paging) 기법 : 가상기억장치를 모두 같은 크기의 블록으로 편성·운용
      페이지 크기↑ → 기억장소 효율↓, 단편화↑, 입출력 시간↓, 맵테이블↓
      페이지 크기↓ → 기억장소 효율↑, 단편화↓, 입출력 시간↑, 맵테이블↑
    • 세그먼테이션(Segmentation) 기법 : 가상 메머리를 크기가 다른 세그먼트로 분할·할당
  • 페이지 교체 알고리즘
    • FIFO(First In First Out) : 먼저 메모리에 적재된 페이지를 먼저 교체
    • OPT(Optimal Replacement, 최적 교체) : 미래에 가장 오래 사용되지 않을 페이지 교체
    • LRU(Least Recently Used) : 가장 오랫동안 사용되지 않은 페이지 교체
    • LFU(Least Frequently Used) : 사용 빈도가 가장 적은 페이지 교체
    • NUR(Not Used Recently) : 참조되지 않고 수정되지 않은 페이지를 우선적으로 교체
    • SCR(Second Chance Replacement) : 가장 오래된 페이지 중에서도 자주 사용되는 페이지의 교체를 방지

 

[Sec 5. 프로세스]

  • 프로세스 영역 : 코드 영역, 데이터 영역, 스택 영역, 힙 영역
  • 프로세스 상태 전이
  • 스레드 : 프로세스 내에서 실행되는 흐름의 단위, 경량 프로세스
    • 각 스레드는 각자 스택 영역을 가지며, 부모 프로세스의 코드, 데이터, 힙 영역은 공유함
    • 분류 : 사용자 수준의 스레드, 커널 수준의 스레드
  • 문맥 교환(Context Switching) : 사용자 간 CPU 전환 과정
  • PCB(Process Control Block) : 운영체제가 프로세스의 정보를 저장하는 공간

 

[Sec 6. 스케줄링]

스케줄링 : 메모리에 올라온 프로세스들 중 어느 프로세스를 먼저 처리할 지 순서를 정하는 것

  • 선점형 스케줄링(Preemptive) : 운영체제가 실행 중인 프로세스로부터 CPU를 강제로 빼앗을 수 있는 방식
    • Round Robin(RR) : 시간 단위를 정하여 프로세스에 순서대로 CPU 할당
    • Shortest Remaining Time(SRT) : 남은 실행 시간이 가장 짧은 프로세스에 CPU 할당
    • 다단계 큐(MLQ) : 프로세스를 특정 그룹으로 분류, 각 그룹에 다른 준비 상태 큐 사용
    • 다단계 피드백 큐(MLFQ) : 우선순위 준비 큐 + FCFS 순서로 CPU 할당
  • 비선점형 스케줄링(Non-Preemptive) : 프로세스가 CPU를 점유하고 있다면 이를 빼앗을 수 없는 방식
    • First Come, First Service(FCFS) : 먼저 도착한 프로세스를 먼저 처리
    • Shortest Job First(SJF) : 실행 시간이 가장 짧은 프로세스에 CPU 할당
    • Highest Response Ratio Next(HRN) : 우선순위 = (대기시간+실행시간)/실행시간
    • 우선순위(Priority) : 각 프로세스에 우선순위 부여, 높은 우선순위에 자원 할당
    • 기한부(Deadline) : 프로세스에 일정한 시간을 주어 그 시간 안에 작업을 완료하도록

 

[Sec 7. 병행 프로세스와 교착상태]

병행 프로세스 : 두 개 이상의 프로세스가 동시에 존재하며 실행 상태에 있는 것

  • 문제 해결책 : 임계구역, 상호배제 기법, 동기화 기법
    • 임계구역(Critical Section) : 한 번에 하나의 프로세스만 접근할 수 있도록 지정된 영역
    • 상호배제(Mutual Exclusion) : 사용 중일 때 다른 프로세스가 사용하지 못하도록 제어
      종류 : 데커의 알고리즘, 피터슨의 알고리즘, 다익스트라 알고리즘, 램포트의 베이커리 알고리즘
    • 동기화 기법 : 스레드의 순서를 조정해주는 기법
      종류 : 세마포어(P, V), 모니터(프로그래밍 언어 수준에서 동시성 제어)

교착 상태 : 여러 프로세스가 자원을 점유한 상태에서 서로 다른 프로세스의 자원을 요구하며 무한정 기다리는 현상

  • 교착 상태 발생 조건 : 상호 배제, 점유와 대기, 비선점, 환형 대기
  • 교착 상태 해결 방법 : 예방(Prevention) 기법, 회피(Avoidance) 기법, 발견(Detection) 기법, 회복(Recovery) 기법
                                       (ex. 회피 기법 - 은행원 알고리즘)

 

[Sec 8. 디스크 스케줄링]

  • 디스크 스케줄링 : 디스크 헤드의 움직임을 최적화하여 데이터를 빨리, 효율적으로 액세스하기 위함
    • Fisrst Come First Served(FCFS) : 요청이 들어온 순서대로 처리
    • Shortest Seek Time First(SSTF) : 현재 헤드에서 가장 가까운 트랙의 요청 먼저 처리
    • SCAN : 헤드 진행 방향에 있는 요청 처리 후 반대 방향 요청 처리 (진행 중 요청 포함)
    • C-SCAN : 항상 한 방향에서 반대 방향으로 진행하며 트랙의 요청 처리
    • LOOK : SCAN 기법을 기초로, 진행 방향의 마지막 요청 처리 후 반대 방향으로 처리
    • C-LOOK : C-SCAN 기법을 기초로, LOOK 기법과 동일
    • N-STEP SCAN : SCAN 기법을 기초로, 진행 중 요청은 반대 방향으로 진행할 때 처리
    • 에션바흐(Eschenbach) 기법 : 부하가 큰 시스템에 사용

 

[Sec 9. 환경변수, 로그, 쉘 스크립트]

  • 환경변수 : 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임
    운영체제에서 프로세스를 생성할 때 참조하는 변수
  • 로그 : 시스템의 모든 기록을 담고 있는 데이터
    리눅스 로그 종류 : xferlog(ftp 로그파일), wtmp(전체 로그인 기록), utmp(현재 로그인 사용자 기록), btmp(로그인 실패 정보 기록)
  • 쉘 스크립트 : 쉘에게 무슨 명령들을 실행할 지 알려주는 스크립트 파일
    입력은 read, 출력은 echo