운영체제

개념

하드웨어와 사용자 사이에서 인터페이스를 제공하고, 한정된 시스템 자원을 더욱 효율적으로 관리하여 컴퓨터의 성능을 향상시키는 시스템 소프트웨어

목적

  • 처리량 향상
  • 응답 시간 단축
  • 신뢰성 향상
  • 유용성 증대

역할

  • 프로세스 관리
  • 기억장치 관리
  • 입출력장치 관리
  • 정보 관리

처리 시스템 분류

  • 일괄 처리 시스템 : 자료가 발생할 때마다 즉시 처리하지 않고 일정 기간 또는 일정량이 될 때까지 모아두었다가 한꺼번에 처리 ex) 전기, 수도, 가스 요금 계산
  • 다중 프로그래밍 시스템 : 다수의 프로그램을 주기억장치에 적재시킨 후 CPU를 번갈아 가며 사용
  • 다중 처리 시스템 : 컴퓨터 시스템의 처리 능력 증대와 신뢰성 향상을 위해 컴퓨터에 두 개 이상의 CPU를 탑재하여 동시에 처리하는 방식
  • 시분할 시스템 : 각 사용자에게 일정한 CPU 시간을 할당, 주어진 시간 동안 컴퓨터와 대화 형식으로 프로그램을 실행하는 방식, 각 사용자에게 컴퓨터 시스템을 독점적으로 사용하고 있다는 느낌을 줌, 우선순위가 없다는 단점이 있음
  • 실시간 시스템 : 입력된 데이터르르 즉시 처리한 후 바로 결과를 보냄, 결과를 얻기까지 시간제약이 존재, 제약의 엄격함에 따라 경성 실시간 시스템과 연성 실시간 시스템으로 구분
  • 분산 처리 시스템 : 네트워크를 통해 연결된 다수의 컴퓨터 시스템에 작업과 자원을 분산시켜 처리

종류

  • 유닉스 : 켄 톰슨에 의해 처음 개발
  • 리눅스 : 리누스 토발즈에 의해 유닉스 호환 운영체제로 개발, 오픈 소스 정책을 따름
  • 윈도우 : 마이크로소프트에서 개발, 다중 작업 기능과 GUI 환경 추가
  • 맥OS : 개인용 컴퓨터인 매킨토시용으로 개발된 GUI 운영체제

부팅 과정

  1. 컴퓨터 시스템에 전원 공급
     
  2. 바이오스 프로그램 실행
     
  3. 자체 진단 기능 수행(바이오스가 이를 수행하며 오류 발생 시, 오류 메시지 출력 및 시스템 정지)
     
  4. 주기억장치에 부트 로더 적재
     
  5. 부트 로더가 운영체제 적재
     
  6. 운영체제 구동

 

프로세스

개념

  • 실행중인 프로그램, 프로그램은 디스크에 저장된 파일과 같은 수동적인 개체, 프로세스는 프로그램
  • 카운터(PC)를 가진 능동적인 개체, 프로그램이 주기억장치에 적재되어 처리를 시작할 때 비로소 프로세스라는 활동적인 개체가 됨
  • 프로그램 카운터는 레지스터에 있음

상태

  • 초기 상태(new state)
  • 준비 상태(ready state)
  • 실행 상태(running state)
  • 대기 상태(blocked state)
  • 종료 상태(exit state)
  • 프로세스 생성 : 초기 -> 준비
  • 디스패치 : 준비 -> 실행
  • 할당 시간 종료 : 실행 -> 준비
  • 해제 : 실행 -> 종료
  • 입출력 요청/사건 대기 : 실행 -> 대기
  • 입출력 완료/사건 발생 : 대기 -> 준비

프로세스 제어 블록(Process Control Block; PCB)

  • 프로세스에 대한 정보를 운영체제에 제공하는 자료 구조
  • 프로세스가 생성될 때 만들어졌다가 실행을 마치면 삭제됨
        
    포인터 | 프로세스 상태
    프로세스 식별자(PID)
    프로그램 카운터
    레지스터
    기억장치 관리 정보
    개방된 파일 리스트
    기타 정보

병행 프로세스

두 개 이상의 연관된 프로세스가 동시에 실행되는 것

교착 상태(Deadlock)

다중 프로그래밍 시스템에서 하나 이상의 프로세스가 절대 일어나지 않을 특정 사건을 기다리고 있는 상태

 

CPU 스케줄링

목적

  • 스케줄링 공정성
  • 처리량 최대화
  • 응답 시간 최소화
  • 반환 시간 예측 가능
  • 자원의 균형적인 사용
  • 응답 시간과 자원 활용도의 조화
  • 프로세스 실행의 무한 연기 배제
  • 우선순위에 따른 실행 보장
  • 시스템의 과도한 부하 방지

기법

  • FCFS(First Come First Served) : 준비 큐에 도착한 프로세스 순서대로 CPU를 할당하는 방식, 비선점 방식
  • 라운드 로빈(Round-Robin) : FCFS와 비슷하지만, 프로세스마다 CPU 사용 시간을 일정하게 할당하여 시간이 지나면 다음 프로세스에게 CPU 사용권을 넘김, 선점 방식
  • SJF(Shortest Job First) : 준비 큐에 대기하고 있는 프로세스 중 예상 실행 시간이 가장 짧은 것을 우선 처리, 비선점 방식
  • SRT(Shortest Recently Time) : 실행 중인 프로세스의 잔여 실행 시간과 준비 큐에서 대기 중인 프로세스의 잔여 실행 시간을 비교하여 가장 짧은 프로세스에게 CPU를 할당, 선점 방식
  • HRN(Highest Response Ratio Next) : 실행 시간이 길더라도 대기를 오래 했다면 우선 처리될 수 있도록 스케줄링할 때 매번 프로세스의 응답률(우선순위)을 계산, 응답률 = (대기 시간 + 실행 시간) / 실행 시간, 비선점 방식
  • 우선순위 : 프로세스마다 우선순위를 부여해 최상위 우선순위 프로세스부터 처리하는 방식, 비선점 방식
  • MLQ(Multi Level Queue) : 작업 특성에 따라 별도의 준비 큐를 배정하여 각 큐마다 별도의 스케줄링 기법을 적용하는 방식, 선점 방식
  • MFQ(Multi Level Feedback Queue) : 입출력 위주 프로세스와 연산 위주 프로세스의 특성에 따라 CPU 사용 시간을 다르게 부여하는 스케줄링 기법, 선점 방식

성능 기준

  • CPU 활용률
  • 처리율
  • 반환 시간
  • 대기 시간
  • 응답 시간

 

주기억장치 관리 기법

단일 프로그래밍 기법

  • 운영체제와 하나의 사용자 프로그램만 주기억장치에 적재, 주기억장치의 빈 공간이 있어도 다른 사용자 프로그램을 실행할 수 없음
  • 자원 낭비가 심함, 주기억장치의 용량보다 작은 프로그램만 실행

고정 분할 다중 프로그래밍 기법

  • 주기억장치를 다수의 고정된 크기로 나눠서 실행 중인 여러 프로세스에게 할당, 분할은 하나의 작업이 적재될 수 있는 일정한 크기의 기억 공간
  • 작업과 분할의 크기가 일치하지 않아 사용되지 않는 빈 공간이 생기거나, 분할이 너무 작아서 작업을 적재하지 못하는 단편화 현상이 발생
  • 내부 단편화 : 분할에 작업을 적재한 후 빈 공간이 남는 현상
  • 외부 단편화 : 적재할 작업보다 분할의 크기가 작아서 분할이 빈 공간으로 남는 현상

가변 분할 다중 프로그래밍 기법

  • 고정 분할 다중 프로그래밍 기법의 단점을 보완한 기법, 고정된 분할의 경계를 없애고 각 작업에게 필요한 만큼의 기억 공간을 할당
  • 작업이 완료되면 사용되지 않는 기억 공간을 회수하여 관리, 새로운 작업의 적재와 완료된 기억 공간 회수가 반복됨에 따라 단편화 현상이 발생
  • 통합 : 인접한 빈 공간을 합병하여 하나의 큰 공백을 형성하는 기법
  • 집약 : 주기억장치의 한쪽 끝에 하나의 큰 공백을 형성하는 기법

 

가상기억 장치

현재 실행 중인 프로그램의 일부는 주기억장치에 적재하고, 나머지는 보조기억장치에 유지

 

파일 시스템 기능

  • 사용자에게 편리한 사용자 인터페이스를 제공
  • 사용자가 파일을 생성, 수정, 삭제할 수 있는 기능을 제공
  • 적절한 제어 방법을 통해 다른 사람의 파일을 공유할 수 있는 기능을 제공
  • 불의의 사고에 대비하기 위한 파일 백업 및 복구 기능을 제공
  • 정보를 암호화하고 해독할 수 있는 능력을 제공

 

파일 보호

  • 접근 통제 방법
  • 접근 제어 행렬
  • 파일 명명
  • 암호
  • 암호 기법
  • 파일 백업
  • 백업은 불의의 사고로 인한 데이터의 손상과 파괴를 막기 위해 파일을 복사하여 다른 곳에 보존하는 방법