정보처리기사/프로그래밍 언어 활용
운영체제 1
RangA
2023. 5. 30. 23:39
01. 운영체제의 개념
01. 운영체제의 개념
1) 운영체제의 정의
- 사용자로 하여금 컴퓨터의 하드웨어를 보다 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어
- 사용자 편의성을 위한 인터페이스인 동시에 다양한 자원을 관리하는 자원 관리자
- 하드웨어를 제어하는 시스템 소프트웨어
- 하드웨어와 소프트웨어 리소스를 관리하고 컴퓨터 프로그램을 위한 공통 서비스를 제공하는 소프트웨어를 의미함
- 컴퓨터의 제한된 자원들인 프로세서(CPU), 기억 장치(ROM, RAM), 입출력 장치, 디스크, 네트워크 장비 등의 효율적인 관리를 위한 프로그램들의 집합
- 하드웨어를 효과적으로 활용할 수 있도록 펌웨어나 소프트웨어로 만들어진 프로그램
- 컴퓨터 본체 및 각 주변 장치를 가장 능률적이고, 경제적으로 사용할 수 있도록 하는 프로그램
2) 운영체제의 목표
- 컴퓨터 시스템의 처리량, 신뢰성을 최대화함
- 컴퓨터 시스템의 반환 시간, 응답 시간, 처리 시간, 대기 시간, 경과 시간을 최소화함
- 컴퓨터를 구성하고 있는 자원을 효율적으로 운영하고 제어함
- 사용자에게 편리한 인터페이스를 제공함
- 제한된 자원을 효율적으로 공유하기 위하여 스케줄링함
3) 운영체제의 성능 평가 척도
- 처리량(Throughput)
- 동일한 시간 내에서 처리할 수 있는 작업량을 의미함
- 보통 안정된 상태에서 측정되며 하루에 처리되는 작업의 개수 또는 시간당 처리되는 온라인상에서의 처리 개수 등으로 측정됨
- 반환 시간(Turn Around Time)
- 컴퓨터센터에 작업을 지시하고 나서부터 결과를 받을 때까지 경과 시간
- 요청한 작업에 대하여 그 결과를 사용자에게 되돌려 줄 때까지 소요되는 시간
- 일괄 처리 시스템에서 작업 제출로부터 결과가 얻어질 때까지의 시간
- 주어진 작업의 수행을 위해 시스템에 도착한 시점부터 그 작업의 출력이 사용자에게 제출되는 시점까지의 시간으로 정의됨
- 신뢰도(Reliability)
- 시스템이 주어진 문제를 얼마나 정확하게 해결하는가를 나타내는 척도
- 작업의 결과가 얼마나 정확하고 믿을 수 있는가를 의미함
- 이용 가능도(Availability, 사용 가능도, 자원 이용도)
- 컴퓨터 시스템 내에 사용 가능한 자원에 관한 정보 표현
- 시스템을 얼마나 빨리 사용할 수 있는가의 정도를 나타냄
- 시스템의 전체 운영 시간 중에서 실제 가동하여 사용 중인 시간의 비율로, 오류 없이 작동된 시간의 비율을 말함
- 일반적으로 전체 시간에 대해 주어진 자원이 실제로 사용되는 시간을 백분율로 나타냄
- 병목(Bottleneck) 현상
- 시스템 자원이 용량 또는 처리량에 있어서 최대 한계에 도달할 때 발생할 수 있음
4) 운영체제 기능 분류
- 제어 프로그램
- 컴퓨터에서 보유하고 있는 자원의 효율적인 관리를 위한 프로그램
- 감시 프로그램 : 중추적인 역할을 담당, 운영체제 제어 루틴의 호출을 인식, 해당 루틴의 동작을 감시/감독
- 데이터 관리 프로그램 : 자료 전송, 파일의 조작 및 처리, 입출력 자료와 프로그램의 논리적인 연결, 파일과 데이터를 표준적으로 처리
- 작업 제어 프로그램 : 운영체제의 각종 제어 루틴의 수행 순서를 관리
- 처리 프로그램
- 사용자의 편이성을 제공하는 프로그램
- 종류에는 언어 번역 프로그램, 서비스 프로그램, 문제 프로그램이 있음
5) 다중 프로그래밍 방식에서의 시간(Time)
- 응답 시간(Response Time)
- 작업이 처음 실행되기까지 걸린 시간으로 반응 시간이라고도 함
- 대기 시간(Waiting Time)
- 실제 작업을 CPU가 실행하지 않은 시간을 더한 시간
- 실행 시간(Running Time)
- CPU가 작업을 처리하는 시간을 더한 시간
- 반환 시간(Turn around Time)
- 실행 시간과 대기 시간을 모두 더한 시간으로 작업이 완료될 때까지 걸린 시간
- 시간 간극(Time Slice)
- 프로세스가 자원을 사용하기 위하여 운영체제에 할당 받은 시간으로 시간 할당량(Quantum)이라고도 함
- 유휴 시간(Idle Time)
- 중앙 처리 장치가 아무런 작업을 처리하지 않고 노는 시간
6) 다중 시스템의 용어 정리
- 다중 프로그래밍(Multi Programming)
- 하나의 주기억 장치와 CPU로 구성된 컴퓨터 시스템에서 주기억 장치에 여러 개의 프로그램을 적재하여 처리하는 방식으로 단위 시간 내에 처리량을 최대로 함
- 다중 프로세싱(Multi Processing, 강결합 시스템)
- 하나의 주기억 장치와 여러 개의 CPU로 구성된 컴퓨터 시스템에서 주기억 장치에 하나 또는 여러 개의 프로그램을 적재하여 처리하는 방식으로 보통 병렬 시스템을 말함
- 다중 컴퓨터(Multi Computer, 약결합 시스템)
- 여러 개의 독립적인 컴퓨터 시스템에서 하나의 작업을 공동으로 처리할 수 있는 시스템으로 보통 분산 컴퓨터 시스템이라고 함
- 다중 태스킹(Multi Tasking)
- 하나의 주기억 장치와 CPU로 구성된 컴퓨터 시스템에서 여러 개의 프로그램을 동시에 처리할 수 있는 방식으로 사용자 관점에서의 다중 프로그래밍을 말함
- Windows 10이나 Linux 등의 환경에서 여러 개의 프로그램을 동시에 작업하는 것을 말함
7) 운영체제의 계층 구조
- 운영체제의 계층
- 마이크로 프로그램(Micro Program)
- 하드웨어의 기본 동작을 제어하는 작은 명령을 마이크로 명령이라 하며, 이 마이크로 명령의 조합으로 만들어진 프로그램을 마이크로 프로그램이라고 함
- 기계어(Machine Language)
- 마이크로 프로그램을 체계적으로 동작시키기 위한 명령어 형식으로, 저급 언어인 어셈블리어와 시스템 프로그래밍 언어인 C언어를 기계어 계층이라고 할 수 있음
- 제어 프로그램(Kernel, Control Program)
- 컴퓨터의 전반적인 동작을 제어할 수 있는 프로그램으로 CPU 관리 프로그램, 메모리 관리 프로그램 등으로 명령어 해석기인 Shell에 의해서 동작됨
- 제어 프로그램 중 항상 실행 중인 제어 프로그램을 커널(Kernel)이라고 함
- 명령어 해석기(Shell)
- 사용자에 의해 명령이 입력되면 명령을 해석하여 제어 프로그램을 동작시키는 프로그램
- 유틸리티(Utility)
- 운영체제의 서비스 프로그램 중 사용자의 편의를 도모하기 위한 프로그램으로 텍스트 에디터, 디버거 등을 포함하고 있음
- 제어 프로그램 중 일부 프로그램을 사용자가 사용할 수 있도록 운영체제가 공개한 부분 프로그램 또는 함수를 라이브러리라고 함
- 프로그램은 라이브러리의 조합으로 만들어지며, 운영체제에서 유용한 프로그램을 미리 만들어 사용자에게 제공한 것을 유틸리티라고 함
- 유틸리티에는 Windows의 메모장, 탐색기, 추적(Trace) 등이 있음
- 응용 프로그램(Application Program)
- 컴퓨터 사용의 편의성과 작업의 효율성을 위해 개발된 프로그램이나 워드프로세서, 엑셀, DBMS, 게임 등을 말함
- 마이크로 프로그램(Micro Program)
- 운영체제의 관리 계층
- 프로세서 관리(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과 호환 가능
- UNIX
3) UNIX
- UNIX의 특징
- 상당 부분 C 언어를 사용하여 작성되었으며, 이식성이 우수함
- 사용자는 하나 이상의 작업을 백그라운드에서 수행할 수 있어 여러 개의 작업을 병행 처리할 수 있음
- 두 사람 이상의 사용자가 동시에 시스템을 사용할 수 있어 정보와 유틸리티들을 공유하는 편리한 작업 환경을 제공함
- 소스를 누구나 볼 수 있도록 설계된 개방형 시스템
- 표준이 정해져 있고 제품의 공급 업자가 많음
- 라이선스 비용이 저렴함
- 커널의 크기가 비교적 작아서 이식성이 뛰어남
- 여러 개의 프로그램을 동시에 수행할 수 있음
- 여러 사용자가 동시에 사용할 수 있음
- 풍부한 네트워킹 기능이 존재함
- 계층적(트리 구조) 파일 시스템
- 사용자 위주의 시스템 명령어가 제공됨
- 쉘(Shell) 명령어 프로그램이 제공됨
- UNIX의 기본 구성
- 커널(Kernel)
- 핵심 루틴으로, 하드웨어 보호기능, 사용자 서비스 제공, 프로세스 관리, 메모리 관리, 네트워크 관리, 입출력 관리, 파일 관리 기능 등을 제공함
- 쉘(Shell)
- 사용자 명령의 입력을 받아 시스템 기능을 수행하는 명령 해석기로 사용자와 시스템 간의 인터페이스를 담당함
- 사용자와 커널 사이에서 중계자 역할을 함
- 여러 가지의 내장 명령어를 가지고 있음
- 유틸리티(Utility)
- 문서 편집기, 데이터베이스 관리, 컴파일러, 네트워크 기능 등을 제공함
- 커널(Kernel)
- UNIX 파일 시스템
- Boot 블록
- 부트스트랩 영역으로 하위에 실린더 블록이 존재함
- 실런더 블록
- 슈퍼 블록 : 파일 시스템의 크기, I-node 테이블의 크기, Free Block 리스트 등이 기록됨
- 실린더 그룹 정보 블록 : 사용 블록의 정보, 통계적 정보가 기록됨
- I-node : 각 파일에 대한 정보를 기억하는 고정된 크기를 갖는 구조체
- 파일 데이터 블록 : 실제 자료가 저장되어 있는 공간
- I-node(Index node) 테이블과 항목
- UID : 사용자 ID(파일 소유자의 식별 번호)
- GID : 그룹 ID(파일 소유 그룹의 식별 번호)
- Protection : 파일 보호 모드
- 파일 링크 수 : 해당 파일을 소유하고 있는 사용자 수(파일 하드 링크 수)
- 블록 주소 : 파일의 실제 데이터가 있는 위치
- 파일의 크기
- 처음 생성 시기(파일이 만들어진 시점)
- 마지막 사용 시기(파일을 최후로 접근한 시점)
- 최종 수정 시기(파일의 최종 수정 시점)
- 파일 속성(타입) : 일반 파일(-), 디렉터리(d), 소켓(s), 링크 파일(l), 장치(c, b)
- Boot 블록
- 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) : 파일의 이름
- UNIX 명령어인 $ls -l를 입력하면 파일 목록을 자세하게 출력함
- UNIX 파일과 디렉터리 권한
- r(read, 읽기) : 파일의 내용을 읽기만 가능한 권한
- w(write, 수정, 쓰기) : 파일을 생성하거나 수정할 수 있는 권한
- x(execute, 실행) : 파일을 실행할 수 있는 권한
파일 타입 | 소유자 권한 | 그룹 권한 | 다른 사용자 권한 |
---|---|---|---|
-(일반 파일), d(디렉터리) | rwx | rwx | rwx |
- UNIX 파일과 디렉터리의 권한 변경
- 파일과 디렉터리의 권한을 변경하는 명령어는 chmod
- rwx는 대응되는 3비트의 값으로 표현되며, 설정되는 비트는 1, 해제되는 비트는 0이 됨
- UNIX 파일 복사와 링크
- cp는 복사하는 명령어이고, ln은 파일이나 디렉터리를 링크하는 명령
- 하드 링크(Hard Link)
- 똑같은 파일을 복사하는 것으로, 원본을 삭제해도 복사본은 그대로 남아 있음
- 처음 생성된 파일의 링크 수는 1, 링크를 추가할 때마다 1씩 증가함
- 실제 파일의 내용을 링크하며, 링크하면 파일의 링크 수가 증가함
- 해당 링크 파일을 삭제하면 링크 수가 감소함
- 해당 링크 수가 0에 도달하면 원본 파일도 삭제됨
- 디렉터리는 링크할 수 없으며 일반 파일을 링크할 때에만 사용함
- 소프트 링크(Soft Link, 심볼릭 링크, Symbolic Link)
- 원본 파일에 대한 위치 정보만을 가지고 있는 것으로 다른 파일에 대한 포인터형
- Windows 바로 가기와 유사한 개념으로 파일의 정보만을 링크함
- 링크명에 @가 붙음
- 링크가 삭제되어도 원본 파일에 영향을 주지 않음
- 주로 디렉터리를 링크할 때 사용함
4) Linux
- Linux의 특징
- UNIX가 중대형 컴퓨터에서 사용되는 것과는 다르게 Linux는 워크스테이션이나 개인용 컴퓨터에서 사용됨
- 파일 시스템이나 기능 일부는 UNIX를 기반으로 하면서, 핵심 커널 부분은 UNIX와 다르게 작성되어 있음
- Linux 운영체제의 소스 코드를 완전 무료로 공개하여 세계적으로 약 천백만 명이 넘는 프로그램 개발자 그룹을 형성하고 있음
- Linux는 모놀리틱 커널을 사용하기 때문에 커널 코드의 임의 기능들을 동적으로 적재하여 사용할 수 없음
- 마이크로 커널(Micro Kernel)
- 메모리 관리, 스케줄링, 기본적인 네트워킹 등 최소한의 기능들만을 제공함
- 추가 기능은 사용자 레벨이어서 작동하고자 하는 모듈들을 끼워 넣어서 운영체제를 확장할 수 있도록 함
- 커널 코드의 임의 기능들을 동적으로 적재하여 사용할 수 있음
- 모놀리틱 커널(Monolithic Kernel)
- 네트워크 스택과 파일 시스템 디바이스 드라이버 등을 커널 기본 기능으로 포함하는 방식
- 마이크로 커널에 비해서 성능이 빠름
- Linux와 Windows 등이 모놀리틱 커널 방식으로 개발되고 있음
- 모놀리틱 커널은 구현이 간단함
- 모놀리틱 커널은 커널 코드의 임의 기능들을 동적으로 적재하여 사용할 수 없음
- 많은 기능을 포함하기 때문에 다양한 환경의 시스템에 적용하기 어려움