RangA 2023. 5. 30. 23:39

01. 운영체제의 개념

01. 운영체제의 개념

1) 운영체제의 정의

  • 사용자로 하여금 컴퓨터의 하드웨어를 보다 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어
  • 사용자 편의성을 위한 인터페이스인 동시에 다양한 자원을 관리하는 자원 관리자
  • 하드웨어를 제어하는 시스템 소프트웨어
  • 하드웨어와 소프트웨어 리소스를 관리하고 컴퓨터 프로그램을 위한 공통 서비스를 제공하는 소프트웨어를 의미함
  • 컴퓨터의 제한된 자원들인 프로세서(CPU), 기억 장치(ROM, RAM), 입출력 장치, 디스크, 네트워크 장비 등의 효율적인 관리를 위한 프로그램들의 집합
  • 하드웨어를 효과적으로 활용할 수 있도록 펌웨어나 소프트웨어로 만들어진 프로그램
  • 컴퓨터 본체 및 각 주변 장치를 가장 능률적이고, 경제적으로 사용할 수 있도록 하는 프로그램

2) 운영체제의 목표

  • 컴퓨터 시스템의 처리량, 신뢰성을 최대화함
  • 컴퓨터 시스템의 반환 시간, 응답 시간, 처리 시간, 대기 시간, 경과 시간을 최소화함
  • 컴퓨터를 구성하고 있는 자원을 효율적으로 운영하고 제어함
  • 사용자에게 편리한 인터페이스를 제공함
  • 제한된 자원을 효율적으로 공유하기 위하여 스케줄링함

3) 운영체제의 성능 평가 척도

  1. 처리량(Throughput)
    • 동일한 시간 내에서 처리할 수 있는 작업량을 의미함
    • 보통 안정된 상태에서 측정되며 하루에 처리되는 작업의 개수 또는 시간당 처리되는 온라인상에서의 처리 개수 등으로 측정됨
  2. 반환 시간(Turn Around Time)
    • 컴퓨터센터에 작업을 지시하고 나서부터 결과를 받을 때까지 경과 시간
    • 요청한 작업에 대하여 그 결과를 사용자에게 되돌려 줄 때까지 소요되는 시간
    • 일괄 처리 시스템에서 작업 제출로부터 결과가 얻어질 때까지의 시간
    • 주어진 작업의 수행을 위해 시스템에 도착한 시점부터 그 작업의 출력이 사용자에게 제출되는 시점까지의 시간으로 정의됨
  3. 신뢰도(Reliability)
    • 시스템이 주어진 문제를 얼마나 정확하게 해결하는가를 나타내는 척도
    • 작업의 결과가 얼마나 정확하고 믿을 수 있는가를 의미함
  4. 이용 가능도(Availability, 사용 가능도, 자원 이용도)
    • 컴퓨터 시스템 내에 사용 가능한 자원에 관한 정보 표현
    • 시스템을 얼마나 빨리 사용할 수 있는가의 정도를 나타냄
    • 시스템의 전체 운영 시간 중에서 실제 가동하여 사용 중인 시간의 비율로, 오류 없이 작동된 시간의 비율을 말함
    • 일반적으로 전체 시간에 대해 주어진 자원이 실제로 사용되는 시간을 백분율로 나타냄
  5. 병목(Bottleneck) 현상
    • 시스템 자원이 용량 또는 처리량에 있어서 최대 한계에 도달할 때 발생할 수 있음

4) 운영체제 기능 분류

  1. 제어 프로그램
    • 컴퓨터에서 보유하고 있는 자원의 효율적인 관리를 위한 프로그램
    • 감시 프로그램 : 중추적인 역할을 담당, 운영체제 제어 루틴의 호출을 인식, 해당 루틴의 동작을 감시/감독
    • 데이터 관리 프로그램 : 자료 전송, 파일의 조작 및 처리, 입출력 자료와 프로그램의 논리적인 연결, 파일과 데이터를 표준적으로 처리
    • 작업 제어 프로그램 : 운영체제의 각종 제어 루틴의 수행 순서를 관리
  2. 처리 프로그램
    • 사용자의 편이성을 제공하는 프로그램
    • 종류에는 언어 번역 프로그램, 서비스 프로그램, 문제 프로그램이 있음

5) 다중 프로그래밍 방식에서의 시간(Time)

  1. 응답 시간(Response Time)
    • 작업이 처음 실행되기까지 걸린 시간으로 반응 시간이라고도 함
  2. 대기 시간(Waiting Time)
    • 실제 작업을 CPU가 실행하지 않은 시간을 더한 시간
  3. 실행 시간(Running Time)
    • CPU가 작업을 처리하는 시간을 더한 시간
  4. 반환 시간(Turn around Time)
    • 실행 시간과 대기 시간을 모두 더한 시간으로 작업이 완료될 때까지 걸린 시간
  5. 시간 간극(Time Slice)
    • 프로세스가 자원을 사용하기 위하여 운영체제에 할당 받은 시간으로 시간 할당량(Quantum)이라고도 함
  6. 유휴 시간(Idle Time)
    • 중앙 처리 장치가 아무런 작업을 처리하지 않고 노는 시간

6) 다중 시스템의 용어 정리

  1. 다중 프로그래밍(Multi Programming)
    • 하나의 주기억 장치와 CPU로 구성된 컴퓨터 시스템에서 주기억 장치에 여러 개의 프로그램을 적재하여 처리하는 방식으로 단위 시간 내에 처리량을 최대로 함
  2. 다중 프로세싱(Multi Processing, 강결합 시스템)
    • 하나의 주기억 장치와 여러 개의 CPU로 구성된 컴퓨터 시스템에서 주기억 장치에 하나 또는 여러 개의 프로그램을 적재하여 처리하는 방식으로 보통 병렬 시스템을 말함
  3. 다중 컴퓨터(Multi Computer, 약결합 시스템)
    • 여러 개의 독립적인 컴퓨터 시스템에서 하나의 작업을 공동으로 처리할 수 있는 시스템으로 보통 분산 컴퓨터 시스템이라고 함
  4. 다중 태스킹(Multi Tasking)
    • 하나의 주기억 장치와 CPU로 구성된 컴퓨터 시스템에서 여러 개의 프로그램을 동시에 처리할 수 있는 방식으로 사용자 관점에서의 다중 프로그래밍을 말함
    • Windows 10이나 Linux 등의 환경에서 여러 개의 프로그램을 동시에 작업하는 것을 말함

7) 운영체제의 계층 구조

  1. 운영체제의 계층
    • 마이크로 프로그램(Micro Program)
      • 하드웨어의 기본 동작을 제어하는 작은 명령을 마이크로 명령이라 하며, 이 마이크로 명령의 조합으로 만들어진 프로그램을 마이크로 프로그램이라고 함
    • 기계어(Machine Language)
      • 마이크로 프로그램을 체계적으로 동작시키기 위한 명령어 형식으로, 저급 언어인 어셈블리어와 시스템 프로그래밍 언어인 C언어를 기계어 계층이라고 할 수 있음
    • 제어 프로그램(Kernel, Control Program)
      • 컴퓨터의 전반적인 동작을 제어할 수 있는 프로그램으로 CPU 관리 프로그램, 메모리 관리 프로그램 등으로 명령어 해석기인 Shell에 의해서 동작됨
      • 제어 프로그램 중 항상 실행 중인 제어 프로그램을 커널(Kernel)이라고 함
    • 명령어 해석기(Shell)
      • 사용자에 의해 명령이 입력되면 명령을 해석하여 제어 프로그램을 동작시키는 프로그램
    • 유틸리티(Utility)
      • 운영체제의 서비스 프로그램 중 사용자의 편의를 도모하기 위한 프로그램으로 텍스트 에디터, 디버거 등을 포함하고 있음
      • 제어 프로그램 중 일부 프로그램을 사용자가 사용할 수 있도록 운영체제가 공개한 부분 프로그램 또는 함수를 라이브러리라고 함
      • 프로그램은 라이브러리의 조합으로 만들어지며, 운영체제에서 유용한 프로그램을 미리 만들어 사용자에게 제공한 것을 유틸리티라고 함
      • 유틸리티에는 Windows의 메모장, 탐색기, 추적(Trace) 등이 있음
    • 응용 프로그램(Application Program)
      • 컴퓨터 사용의 편의성과 작업의 효율성을 위해 개발된 프로그램이나 워드프로세서, 엑셀, DBMS, 게임 등을 말함
  2. 운영체제의 관리 계층
    • 프로세서 관리(1계층) : 동기화 및 프로세서 스케줄링을 담당함
    • 기억 장치 관리(2계층) : 메모리의 할당 및 회수 기능을 담당함
    • 프로세스 관리(3계층) : 프로세스의 생성, 제거, 메시지 전달, 시작과 정지 등의 작업을 담당함
    • 주변 장치 관리(4계층) : 주변 장치의 상태 파악과 입출력 장치의 스케줄링을 담당함
    • 파일(정보) 관리(5계층) : 파일의 생성과 소멸, 열기와 닫기, 유지 및 관리를 담당함



02. 운영체제의 종류별 특징

1) Windows 계열 운영 체제

  • Windows 계열 운영체제는 개인용, 기업용, 워크스테이션용으로 출시됨
  • 사용자가 컨트롤하는 마우스의 아이콘을 이용하여 소프트웨어를 실행시키는 편리한 인터페이스를 지원하는 것이 특징
  • 문제점이 발견되었을 시 수정에 시간이 걸린다는 단점이 있음
  • UNIX 계열의 운영체제에 비하여 시간적인 차이를 이용하는 악성 해커들이 있어 보안에 취약하다는 문제점이 지속적으로 제기되고 있음

2) UNIX/Linux 계열 운영체제

  • UNIX는 1960년대 AT&T Bell 연구소, MIT 그리고 General Electric이 공동 연구로 개발에 착수하여 개발한 운영체제
  • C언어로 재이식되어 대중화의 기반을 마련하였고, 1970년대 AT&T가 본격적으로 UNIX 시스템을 판매함
  • 많은 변화를 거쳐 SYSTEM V 계열과 BSD 계열로 발전해 왔었으나, 현재는 이 둘의 장점을 통합한 버전의 UNIX가 배포되고 있음
  • Linux는 UNIX의 호환 커널
  • Linux는 수천 명 이상의 개발자들이 코드를 보고 갱신하고 있음
  • Linux는 버그 발생 시 다수의 개발자가 수정에 참여하여 빠른 업데이트가 가능하지만, Windows와 같은 체계적인 지원이 상대적으로 부족하여 일반인들보다는 전문가들이 주로 사용하고 있음
  • UNIX와 Linux의 차이점
    • UNIX
      • 대부분 무료이며 지원 정책에 따라 일부 유료 서비스 제품도 있음
      • 주 사용자는 개발자, 일반 사용자
      • 개발사는 커뮤니티
      • 오픈소스 개발
      • 모바일 폰, 태블릿 등 다양하게 사용
      • GUI 제공, 파일 시스템 지원, BASH 쉘 사용
    • Linux
      • 대부분 유료
      • 주요 사용자는 메인프레임, 워크스테이션 등 대형 시스템 관리자
      • 개발사는 IBM, HP 등
      • 대부분 사업자에 의해 배포
      • 인터넷 서버, 워크스테이션 등 대형 서비스에 주로 사용
      • Text 명령어 기반이었으나 GUI 명령어도 제공하는 추세, 파일 시스템 제공, 기본은 Bourne Shell, 현재는 많은 Shell과 호환 가능

3) UNIX

  1. UNIX의 특징
    • 상당 부분 C 언어를 사용하여 작성되었으며, 이식성이 우수함
    • 사용자는 하나 이상의 작업을 백그라운드에서 수행할 수 있어 여러 개의 작업을 병행 처리할 수 있음
    • 두 사람 이상의 사용자가 동시에 시스템을 사용할 수 있어 정보와 유틸리티들을 공유하는 편리한 작업 환경을 제공함
    • 소스를 누구나 볼 수 있도록 설계된 개방형 시스템
    • 표준이 정해져 있고 제품의 공급 업자가 많음
    • 라이선스 비용이 저렴함
    • 커널의 크기가 비교적 작아서 이식성이 뛰어남
    • 여러 개의 프로그램을 동시에 수행할 수 있음
    • 여러 사용자가 동시에 사용할 수 있음
    • 풍부한 네트워킹 기능이 존재함
    • 계층적(트리 구조) 파일 시스템
    • 사용자 위주의 시스템 명령어가 제공됨
    • 쉘(Shell) 명령어 프로그램이 제공됨
  2. UNIX의 기본 구성
    • 커널(Kernel)
      • 핵심 루틴으로, 하드웨어 보호기능, 사용자 서비스 제공, 프로세스 관리, 메모리 관리, 네트워크 관리, 입출력 관리, 파일 관리 기능 등을 제공함
    • 쉘(Shell)
      • 사용자 명령의 입력을 받아 시스템 기능을 수행하는 명령 해석기로 사용자와 시스템 간의 인터페이스를 담당함
      • 사용자와 커널 사이에서 중계자 역할을 함
      • 여러 가지의 내장 명령어를 가지고 있음
    • 유틸리티(Utility)
      • 문서 편집기, 데이터베이스 관리, 컴파일러, 네트워크 기능 등을 제공함
  3. UNIX 파일 시스템
    • Boot 블록
      • 부트스트랩 영역으로 하위에 실린더 블록이 존재함
    • 실런더 블록
      • 슈퍼 블록 : 파일 시스템의 크기, I-node 테이블의 크기, Free Block 리스트 등이 기록됨
      • 실린더 그룹 정보 블록 : 사용 블록의 정보, 통계적 정보가 기록됨
      • I-node : 각 파일에 대한 정보를 기억하는 고정된 크기를 갖는 구조체
      • 파일 데이터 블록 : 실제 자료가 저장되어 있는 공간
    • I-node(Index node) 테이블과 항목
      1. UID : 사용자 ID(파일 소유자의 식별 번호)
      2. GID : 그룹 ID(파일 소유 그룹의 식별 번호)
      3. Protection : 파일 보호 모드
      4. 파일 링크 수 : 해당 파일을 소유하고 있는 사용자 수(파일 하드 링크 수)
      5. 블록 주소 : 파일의 실제 데이터가 있는 위치
      6. 파일의 크기
      7. 처음 생성 시기(파일이 만들어진 시점)
      8. 마지막 사용 시기(파일을 최후로 접근한 시점)
      9. 최종 수정 시기(파일의 최종 수정 시점)
      10. 파일 속성(타입) : 일반 파일(-), 디렉터리(d), 소켓(s), 링크 파일(l), 장치(c, b)
  4. UNIX 파일 목록 구조
    • UNIX 명령어인 $ls -l를 입력하면 파일 목록을 자세하게 출력함
      • 예시 : -rwxr-xr-- 2 peter staff 3542 8월 31일 10:00 aaash
    • 파일 목록
      • 파일 타입(-) : aaash의 파일 타입은 일반 파일(-)
      • 소유자 권한(rwx) : aaash 파일을 소유한 사용자는 파일을 읽고, 수정하고, 실행할 수 있음
      • 그룹 권한(r-x) : aaash 파일의 소유자가 속한 그룹 사용자들은 이 파일을 읽고, 실행할 수 있음
      • 전체 권한(r--, 다른 사용자의 권한) : 파일에 접근할 수 있는 모든 사용자는 읽기만 가능함
      • 링크 수(2) : 파일을 사용하고 있는 사용자의 수가 2명(하드 링크 파일이 2개)
      • 소유자명(peter) : 파일을 소유하고 있는 사용자의 id
      • 그룹명(staff) : 파일을 소유하고 있는 그룹 디렉터리
      • 크기(3542) : 파일의 크기
      • 날짜(8월 31일) : 파일 생성 또는 수정 날짜
      • 시간(10:00) : 파일 생성 또는 수정 시간
      • 파일명(aaash) : 파일의 이름
  5. UNIX 파일과 디렉터리 권한
    • r(read, 읽기) : 파일의 내용을 읽기만 가능한 권한
    • w(write, 수정, 쓰기) : 파일을 생성하거나 수정할 수 있는 권한
    • x(execute, 실행) : 파일을 실행할 수 있는 권한
  파일 타입     소유자 권한     그룹 권한     다른 사용자 권한  
  -(일반 파일), d(디렉터리)     rwx     rwx     rwx  
  1. UNIX 파일과 디렉터리의 권한 변경
    • 파일과 디렉터리의 권한을 변경하는 명령어는 chmod
    • rwx는 대응되는 3비트의 값으로 표현되며, 설정되는 비트는 1, 해제되는 비트는 0이 됨
  2. UNIX 파일 복사와 링크
    • cp는 복사하는 명령어이고, ln은 파일이나 디렉터리를 링크하는 명령
    • 하드 링크(Hard Link)
      • 똑같은 파일을 복사하는 것으로, 원본을 삭제해도 복사본은 그대로 남아 있음
      • 처음 생성된 파일의 링크 수는 1, 링크를 추가할 때마다 1씩 증가함
      • 실제 파일의 내용을 링크하며, 링크하면 파일의 링크 수가 증가함
      • 해당 링크 파일을 삭제하면 링크 수가 감소함
      • 해당 링크 수가 0에 도달하면 원본 파일도 삭제됨
      • 디렉터리는 링크할 수 없으며 일반 파일을 링크할 때에만 사용함
    • 소프트 링크(Soft Link, 심볼릭 링크, Symbolic Link)
      • 원본 파일에 대한 위치 정보만을 가지고 있는 것으로 다른 파일에 대한 포인터형
      • Windows 바로 가기와 유사한 개념으로 파일의 정보만을 링크함
      • 링크명에 @가 붙음
      • 링크가 삭제되어도 원본 파일에 영향을 주지 않음
      • 주로 디렉터리를 링크할 때 사용함

4) Linux

  1. Linux의 특징
    • UNIX가 중대형 컴퓨터에서 사용되는 것과는 다르게 Linux는 워크스테이션이나 개인용 컴퓨터에서 사용됨
    • 파일 시스템이나 기능 일부는 UNIX를 기반으로 하면서, 핵심 커널 부분은 UNIX와 다르게 작성되어 있음
    • Linux 운영체제의 소스 코드를 완전 무료로 공개하여 세계적으로 약 천백만 명이 넘는 프로그램 개발자 그룹을 형성하고 있음
    • Linux는 모놀리틱 커널을 사용하기 때문에 커널 코드의 임의 기능들을 동적으로 적재하여 사용할 수 없음
  2. 마이크로 커널(Micro Kernel)
    • 메모리 관리, 스케줄링, 기본적인 네트워킹 등 최소한의 기능들만을 제공함
    • 추가 기능은 사용자 레벨이어서 작동하고자 하는 모듈들을 끼워 넣어서 운영체제를 확장할 수 있도록 함
    • 커널 코드의 임의 기능들을 동적으로 적재하여 사용할 수 있음
  3. 모놀리틱 커널(Monolithic Kernel)
    • 네트워크 스택과 파일 시스템 디바이스 드라이버 등을 커널 기본 기능으로 포함하는 방식
    • 마이크로 커널에 비해서 성능이 빠름
    • Linux와 Windows 등이 모놀리틱 커널 방식으로 개발되고 있음
    • 모놀리틱 커널은 구현이 간단함
    • 모놀리틱 커널은 커널 코드의 임의 기능들을 동적으로 적재하여 사용할 수 없음
    • 많은 기능을 포함하기 때문에 다양한 환경의 시스템에 적용하기 어려움