본문 바로가기

개인 스터디/정리

[정보처리기사 실기] 24. 운영체제의 특징

 

1. 운영체제 종류

  • 운영체제 : 컴퓨터의 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어
  • 운영체제 특징 : 사용자 편리성 제공, 인터페이스 기능을 담당, 스케줄링 담당, 자원 관리, 제어 기능
  • 커널과 쉘(인터페이스)
    • 커널 : 운영체제의 핵심적인 기능들이 모인 컴퓨터 프로그램. 프로세스/기억장치/주변장치/파일 관리
    • 쉘 : 명령어 라인을 읽어 필요한 시스템 기능을 실행시키는 명령어 해석기
  • 운영체제 종류
    • 윈도우 : MS-DOS의 멀티태스킹 기능과 GUI 환경을 제공하는 마이크로소프트사가 개발한 운영체제
      • GUI 제공 : 마우스로 작업을 수행하는 그래픽 기반 인터페이스 방식
      • 선점형 멀티태스킹 방식 : 동시에 여러 프로그램을 실행하며 운영체제가 각 CPU 이용 시간을 제어
      • 자동감지 기능 제공 : 하드웨어 설치 시 필요한 환경을 운영체제가 구성
      • OLE 사용 : 개체를 현재 작성 중인 문서에 자유롭게 연결하여 편집 가능
    • 유닉스 : 90% 이상 C언어로 구현되어 있는 운영체제로 범용 다중 사용자 방식의 시분할 운영체제
      • 대화식 운영체제 기능 제공 : 프롬프트에 사용자가 명령을 입력하는 대화식 운영체제 기능 제공
      • 다중 작업 기능 제공 : 다수의 작업이 공용자원을 나누어 사용하여 하나 이상의 작업을 수행
      • 다중 사용자 기능 제공 : 여러 단말이 하나의 컴퓨터에 연결되어 여러 사람이 동시에 시스템 사용 가능
      • 이식성 제공  : 다른 하드웨어 기종으로 쉽게 이식 가능
      • 계층적 트리 구조 파일 시스템 제공 : 계층적 트리 구조를 가져 통합적인 파일 관리 용이
      • 유닉스 계열 운영체제
        • 리눅스 : 소스 코드가 공개된 오픈 소스 기반의 운영체제
        • 맥 : 애플이 개발한 GUI 기반의 운영체제
        • 안드로이드 : 휴대용 장치를 위한 운영체제. 자바와 코틀린 언어 사용, 런타임 라이브러리, SDK 제공
  • 운영체제 발달 과정
    • 일괄 처리 시스템 : 하나의 작업이 끝나기 전까지 다른 작업이 불가능
    • 시분할 시스템 : 여러 사용자의 프로그램을 번갈아가면서 처리
    • 다중 처리 시스템 : 하나의 컴퓨터에 여러 CPU를 이용하여 병렬로 처리
    • 범용 시스템 : 메모리에 적재되어 실행되는 프로그램에 따라 여러 가지 용도로 사용하는 시스템
    • 분산 처리 시스템 : 다른 장소에 위치한 컴퓨터 시스템에 기능과 자원을 분산시켜 상호 협력할 수 있는 시스템

 

 

2. 운영체제 기본 명령어 활용

  • 운영체제 제어
    • CLI : 사용자가 직접 명령어를 입력, 컴퓨터에 명령을 내리는 방식
    • GUI : 마우스로 화면을 클릭하여 그래픽 위주로 컴퓨터를 제어하는 방식
  • 윈도우 운영체제 기본 면령어
    • Help : 명령어 검색
    • ATTRIB : 파일 속성을 표시하거나 바꿈
    • CALL : 한 일괄 프로그램에서 다른 일괄 프로그램을 호출
    • CD : 현재 디렉터리 이름을 보여주거나 바꿈
    • CHKDSK : 디스크를 검사하고 상태 보고서를 표시
    • CLS : 화면을 지움
    • CMD : Windows 명령 프롬프트 창을 열어ㅈㅁ
    • COMP : 두 개 이상의 파일을 비교
    • DISKPART : 디스크 파이션 속성을 표시하거나 구성
    • ECHO : 메시지를 표시하거나 ECHO를 사용 또는 사용하지 않음
    • ERASE : 하나 이상의 파일을 지움
    • EXIT : CMD.EXE 프로그램을 마침
  • 리눅스/유닉스 계열 기본 명령어
    • --help, -h : 명령어 확인
    • uname-a : 시스템의 모든 정보 확인
    • uname-r : 운영체제의 배포버전 출력
    • cat : 파일의 내용을 화면에 출력
    • uptime : 시스템의 가동 시간과 현재 사용자 수, 평균 부하량 등을 확인
    • id : 사용자의 로그인명, id, 그룹 id 등을 출력
    • last : 시스템 부팅부터 현재까지의 모든 사용자의 로그인과 로그아웃에 대한 정보 표시
    • who : 현재 접속 사용자 정보 표시
    • ls : 자신이 속해있는 폴더 내에서의 파일 및 폴더들을 표시
    • pwd : 현재 작업 주인 디렉토리의 절대 경로 출력
    • rm : 파일 삭제
    • cp : 파일 복사
    • mv : 파일 이동
    • ps : 현재 실행되고 있는 프로세스 목록 출력
    • pamp : 프로세스 ID를 기준으로 메모리 맵 정보를 출력
    • kill : 특정 PID 프로세스 종료 명령어
    • chmod : 특정 파일 또는 디렉토리의 퍼미션 수정
    • chown : 파일이나 디렉토리의 소유자, 소유 그룹 수정
    • ifconfig : 네트워크 인터페이스를 설정하거나 확인
    • host : 도메인은 알지만 ip 주소를 모르거나, 반대인 경우에 사용
    • tar : 여러 파일을 하나의 파일로 묶거나 풀 때 사용
    • gzip : 파일을 묶거나 풀 수는 없지만 압축을 담당
    • grep : 입력으로 전달된 파일의 내용에서 특정 문자열을 찾을 때 사용
    • find : 특정 파일을 찾음
    • cp : 디렉토리 복사
    • rsync : 로컬 또는 원격에 파일과 디렉터리 복사 및 동기화
    • df : 시스템에 마운트된 하드디스크의 남은 용량을 확인할 때 사용
    • du : 파일 사이즈를 칼로 바이트 단위로 보여줌
    • cd : 디렉토리 이동
  • 리눅스/유닉스 운영체제의 파일 접근 권한 관리 
    • 파일 접근 제어 개요 : open(), read() write()와 같은 시스템 호출이 수행되고, 각 파일의 정보가 저장된 i-node 값을 읽음
    • 파일 접근 제어 방법
      • 접근 권한 유형
        • User : 파일을 소유하고 있는 사용자
        • Group : 소유자를 제외하고 파일과 같은 그룹에 속해있는 모든 사용자 모임
        • Other : 그 밖의 사용자
      • 파일 접근 모드 : Read(4), Write(2), eXcute(1)
    • 접근 권한 변경
      • chmod 명령어를 이용해 접근 권한 변경
      • 기호 기술 : +(추가), -(제거), =(지정)
      • 숫자 기술(8진수) : r(4), w(2), x(1)

 

 

3. 운영체제 핵심 기능 파악

  • 메모리 관리 : 한정된 메모리 공간을 효율적으로 사용하기 위해 주기억장치에 적재시키는 시기, 위치 등을 지정하여 관리
  • 메모리 관리 기법
    • 반입 기법 : 주기억장치에 적재할 다음 프로세스의 반입 시기 결정
      • 요구 반입 기법, 예상 반입 기법
    • 배치 기법 : 디스트에 있는 프로세스를 주기억 장치의 어느 위치에 저장할 것인지 결정
      • 최초 적합 : 프로세스가 적재될 수 있는 첫 번째 분할에 할당
      • 최적 적합 : 가장 크기가 비슷한 공간을 선택
      • 최악 적합 : 가장 큰 공간에 할당
    • 할당 기법 : 실행해야 할 프로세스를 어떤 방법으로 주기억장치에 할당할 것인지 결정
      • 연속 할당 기법 : 주기억장치에 연속으로 할당
        • 단일 분할 할당 기법, 다중 분할 할당 기법
      • 분산 할당 기법 : 주로 가상 기억 장치에서, 프로세스를 여러 조각으로 나누어 배치
        • 페이징 기법 : 프로세스를 일정하게 분할하여 적재
        • 세그먼테이션 기법 : 프로세스를 가변적인 크기의 블록으로 나누고 메모리 할당
        • 페이징/세그먼테이션 혼용기법 : 외부 단편화 및 내부 단편화 최소화를 위해 결합
    • 교체 기법 : 제거할 프로세스를 결정하는 기법
      • FIFO : 먼저 들어온 페이지부터 교체
      • LRU : 가장 오랫동안 사용되지 않은 페이지를 교체
      • LFU : 참조 횟수가 가장 적은 페이지를 교체
      • OPT : 가장 오랫동안 사용하지 않을 페이지를 교체
      • NUR : 최근에 사용하지 않은 페이지를 교체
      • SCR : FIFO 기법의 단점을 보완한 기법
  • 메모리 단편화 : 프로세스 할당, 반납 과정에서 낭비되는 기억장치가 발생하는 현상
    • 내부 단편화 : 페이징 기법 사용 시 프로세스를 적재한 후 남은 공간
    • 내부 단편화 해결 방안
      • 슬랩 할당자 : 공간을 작은 크기로 분할하고 메모리를 할당해제하는 동적 메모리 관리 기법
      • 통합 : 인접한 단편화 영역을 하나로 통합
      • 압축 : 메모리의 모든 단편화 영역을 하나로 압축
    • 외부 단편화 : 세그멘테이션 기법 사용 시 할당된 크기가 프로세스 크기보다 작아서 사용하지 못하는 공간
    • 외부 단편화 해결 방안
      • 버디 메모리 할당 : 메모리를 2^n 크기로 분할하여 메모리를 할당하는 기법
      • 통합 : 인접한 단편화 영역을 하나로 통합
      • 압축 : 메모리의 모든 단편화 영역을 하나로 압축
  • 페이징 기법의 문제점 - 스레싱 : 페이지 부재가 발생하여 프로세스릐 실제처리 시간 보다 페이지 교체 시간이 더 많아지는 현상
  • 페이징 기법의 문제점의 해결방안
    • 워킹 세트 : 각 프로세스가 많이 참조하는 페이지들의 집합을 주기억장치 공간에 계속 상주하게 하는 방법
      • 장점 : 멀티프로그래밍 정도를 높일 수 있고, CPU 활용률을 최적화 가능
      • 단점 : 워킹 세트 추적관리가 복잡하고, 워킹 세트 크기 설정의 모호함이 발생
    • 페이지 부재 빈도 : 페이지 부재율의 상한과 하한을 정해서 페이지 부재율을 예측하고 조절
      • 장점 : 부하가적고, 직접적으로 페이지 부재율 조절이 가능
      • 단점 : 프로세스 중지 과정이 발생하고, 페이지 참조가 새로운 지역성으로 이동 가능 
  • 지역성 : 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 특성
    • 시간 지역성 : 참조했던 메모리는 빠른 시간에 다시 참조될 확률이 높음
    • 공간 지역성 : 참조된 메모리 근처의 메모리를 참조하는 특성
    • 순차 지역성 : 데이터가 순차적으로 액세스 되는 현상
  • 프로세스 : CPU에 의해 처리되는 프로그램
  • 프로세스 상태
    • 생성(Create) : 사용자에 의해 프로세스 생성
    • 준비(Ready) : CPU를 할당받을 수 있는 상태
    • 실행(Running) : 프로세스가 CPU를 할당받아 동작중인 상태
    • 대기(Waiting) : 프로세스 실행 중 입출력 처리 등으로 인해 CPU를 양도하고 대기 리스트에서 기다리는 상태
    • 완료(Complete) : CPU를 할당받아 주어진 시간 내에 완전히 수행을 종료한 상태
  • 프로세스 상태 전이
    • Diespatch : CPU를 할당 받아 준비 상태에서 실행 상태로 전이
    • Timer Run Out : 프로세스는 지정된 시간이 초과되면 스케줄러에 의해 PCB를 저장, CPU 반납 후 다시 준비 상태로 전이
    • Block : 프로세스가 기타 사건이 발생하면 CPU를 스스로 반납하고 대기 상태로 전이
    • Wake-Up : 입출력이 종료되면 대기 상태의 흐로세스에게 입출력 종료 사실을 알리고 준비 상태로 전이
  • 프로세스 스케줄링 : CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업
  • 프로세스 스케줄링 주요 용어
    • 서비스 시간 : 프로세스가 결과를 산출하기까지 소요되는 시간
    • 응답시간 : 프로세스들이 입력되어 서비스를 요청하고, 반응하기 시작할 때까지 소요되는 시간
    • 반환시간 : 대기시간 + 수행시간
    • 대기시간 : 프로세스가 할당되기까지 큐에 대기하는 시간
    • 평균 대기 시간 : 준비 큐에서 대기하는 평균 시간
    • 종료 시간 : 프로세스가 요구하는 서비스 시간을 모두 수행하고 종료된 시간
    • 시간 할당량 : 한 프로세스가 프로세스를 독점하는 것을 방지하기 위해 서비스되는 시간 할당량
    • 응답률 : HRN 스케줄링에서 사용. (대기시간+서비스 시간)/서비스 시간
  • 프로세스 스케줄링 유형
    • 선점형 스케줄링 : 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유
      • SRT : 가장 짧은 시간이 소요되는 프로세스를 먼저 수행
      • MLQ(다단계 큐) : 작업을 여러 그룹으로 분할하고, 각 독자적인 스케줄링을 가능 큐를 이용
      • MLFQ(다단계 피드백 큐) : FCFS와 라운드 로빈 스케줄링 기법을 혼합
      • RR(라운드 로빈) : 모든 프로세스에 대해 같은 크기의 CPU 시간을 할당하고, 처리하지 못하면 준비 큐 리스트 뒤에 전달
    • 비선점형 스케줄링 : 한 프로세스가 CPU를 할당받으면 반환 시까지 다른 프로세스가 점유 불가능
      • Priority : 프로세스 별로 우선순위가 주어짐
      • Deadline : 요청에 명시된 시간 내 처리를 보장하느 기법
      • HRN : 현재 응답률이 가장 높은 것을 선택
      • FCFS : 준비 큐에 도착한 순서에 따라 CPU 할당
      • SJF : 프로세스 도착 시 가장 작은 서비스 시간을 갖는 프로세스 선택
  • 프로세스 관리 - 교착상태 : 두 개 이상의 프로세스가 특정 자원할당을 무한정 대기
  • 교착상태 발생 조건
    • 상호 배제(Mutual Exclusive) : 프로세스가 자원을 배타적으로 점유하여 다른 프로세스가 자원을 사용할 수 없는 상태
    • 점유와 대기(Hold&Wait) : 한 프로세스가 자원을 점유하며 또 다른 자원을 요청하여 대기
    • 비선점(Non Preemption) : 프로세스가 자원을 점유하고 있는 동안 다른 프로세스가 그 자원을 강제로 빼앗을 수 없음
    • 환형 대기(Circular Wait) : 두 개 이상의 프로세스 간 자원의 점유와 대기가 하나의 원형을 구성
  • 교착상태 해결 방법
    • 예방 : 교착상태 발생 조건 중 하나를 충족하지 못하게 함.
    • 회피 : 안전한 상태를 유지할 수 있는 요구만 수락(은행가 알고리즘)
    • 발견 : 시스템의 상태를 감시 알고리즘을 통해 검사
    • 복구 : 교착상태가 없어질 때까지 프로세스를 순차적으로 강제 종료
  • 디스크 스케줄링 : 데이터를 액세스하기 위해 디스크 헤드를 움직이는 경로를 결정
  • 디스크 스케줄링 종류
    • FCFS : 디스크 큐에 가장 먼저 들어온 트랙에 대한 요청을 먼저 처리
    • SSTF : 탐색거리가 가장 짧은 트랙에 대한 요청을 먼저 처리
    • SCAN : 진행 방향이 결정되면 탐색 거리가 짧은 순서에 따라 그 방향의 모든 요청으로 서비스
    • C-SCAN : 항상 바깥쪽에서 안쪽으로 움직이며, 가장 짧은 탐색 서리를 갖는 요청을 서비스
    • LOOK : SCAN을 기초로 사용하며, 해당 방향으로 더 이상의 요청이 없으면 역방향으로 진행
    • N-STEP SCAN : SCAN을 기초로 사용하며, 장향의 진행이 시작될 당시 대기중이던 요청들만 서비스
    • SLTF : 회전지연시간이 가장 짧은 요청부터 서비스

 

 


# 회고

 

안드로이드가 유닉스 기반 운영체제인 줄 몰랐다.

SDK도 제공해서 함 만들어보고 싶다.