[OS] 운영체제란?
운영체제(Operating System)
컴퓨터 시스템의 하드웨어, 소프트웨어 자원들을 효율적으로 운영 및 관리함으로써 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 하는 시스템 소프트웨어이다. 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 즉, 중개자 역할을 해주는 프로그램이다.
-운영체제는 성능을 높이고 사용자에게 편의성 편의성 제공을 목적으로 하는 컴퓨터 하드웨어 관리 프로그램
운영체제의 역할
1. User Interface(편리성) : CUI(Character User Interface), GUI(Graphical User Interface), EUCI(End-User Comfortable Interface)
2. Resource Management(효율성) : HW source, SW source
3. Process and Thread
4. System Management(시스템 보호)
컴퓨터 시스템의 구성
OS는 System call interface, kernel를 다 포함하고 있는 것으로 process의 요청을 system call interface로 통과하여 kernel을 통하여 hw에 요청한다.
운영체제 종류
운영체제의 대표적인 종류에는 임베디드 - 리눅스, 서버 - 유닉스, 모바일 - 안드로이드, 데스크탑 - 윈도우가 대표적이다.
Windows(윈도우) : MS(Microsoft)에서 개발한 컴퓨터용 운영체제로 desktop OS중 가장 많은 점유율을 차지한다. 점유율이 높은 만큼 사용자에게 최적화가 잘 되어있지만 개발자를 위한 환경은 부족한 부분이 많아 개발을 할 때에는 잘 사용되지 않는다.
Linux(리눅스) : 리누스 토르발스가 커뮤니티 주체로 개발한 컴퓨터 운영체제로 다중 사용자, 다중 작업, 다중 스레드를 지원하는 네트워크 운영체제이며 무료 오픈소스이다.
Unix(유닉스) : 70년대 초 벨 연구소 직원 켄 톰슨, 데니스 리치, 더글러스 매클로이등이 개발하였으며 멀티태스킹과 다중 사용자 방식의 시분할 운영체제이고 현대적 컴퓨터 대부분의 운영체제의 원형이된 운영체제다. 서버 운영에 필수적인 CLI(Command-line interface)에 특화되어 있어 서버 시장에서 인기가 많다.
운영체제의 유형
일괄처리 시스템(Batch Processing System)
유사한 작업들끼리 일정량 또는 일정 시간 묶어서 처리하는 방식. 컴퓨터 시스템을 효율적으로 사용할 수 있지만 하나의 작업이 모든 자원을 독점하므로 CPU 유휴 시간이 줄어든다.
다중 프로그래밍 시스템(Multi Programming System)
하나의 CPU와 주기억 장치를 이용하여 여러 개의 프로그램을 동시에 처리하는 방식, CPU와 대화하면서 처리가 가능하여 CPU 사용률과 처리량이 증가한다.
실시간 시스템(Real-Time System)
단말기의 요청을 즉시 처리하여 결과를 반환하는 시스템
다중처리 시스템(Multi-Processing System)
여러 대의 CPU와 하나의 주기억장치를 이용하여 여러 개의 프로그램을 동시에 처리하는 방식, 단일 운영체제에 의해 관리하며, 하나의 CPU가 고장나더라도 시스템의 신뢰성과 안정성을 보장할 수 있다.
분산 컴퓨팅(Distributed Computing) 넷상으로 연결된 여러 대의 컴퓨터들의 처리 능력을 이용하여 복잡한 계산 문제를 해결하려는 분산 처리 모델이다.
*CLI : 커맨드 라인 인터페이스로 가상 터미널 or 터미널을 통해 사용자와 컴퓨터가 상호 작용 하는 방식
운영체제의 기능
1. 프로세스 관리 : OS에서 동시에 실행되는 많은 프로세스를 효율적으로 관리
- 프로세스와 스레드를 스케쥴링
-사용자 프로세스와 시스템 프로세스를 생성하고 제거
- 프로세스를 중지하고 재수행
- 프로세스 동기화 방법 제공
- 프로세스 통신 방법 제공
- Deadlock 을 방지하는 방법 제공
2. 파일 관리 : 파일 생성, 수정, 삭제, 조작, 백업 등
- 파일을 생성하고 삭제
-디렉터리를 생성하고 삭제
- 보조기억장치에 있는 파일을 맵핑
- 비휘발성 저장장치에 파일을 저장
3. 네트워크 관리 : 네트워크 서비스 성능, 오류분석, 프로비저닝, 품질관리 등
- 프로세서가 통신을 할 때는 경로 설정, 접속 정책, 충돌, 보안 문제를 고려해야 하는데 이를 운영체제가 관리
4. 메인 메모리 관리 : 메모리 추적, 프로세스에 따른 메모리 할당
- 메모리의 어느 부분을 사용하고 누가 사용하는지 점검
- 메모리에 저장할 프로세스를 결정
- 메모리를 할당하고 회수하는 방법 결정
5. 보조 스토리지 관리 : 스토리지 할당, 여유 광간 관리, 디스크 스케줄링
- 빈 여유 공간 관리
- 새로운 파일을 작성할 때 저장 장소 할당
- 메모리 접근 요청을 스케쥴링
- 파일을 생성하고 삭제
6. 입출력 장치 관리 : 버퍼 캐싱 시스템 제공, 장치 드라이버 제공
- 운영체제는 특수 프로그램인 장치 드라이브를 사용해 입출력장치와 상호작용한다. 장치 드라이버는 특정 하드웨어와 통신할 수 있는 인터페이스를 제공하므로 특정 하드웨어에 종속된 프로그램 이다.
- 임시 저장(buffer-caching) 시스템 기능을 제공하여 주변장치 관리
- 일반 장치용 드라이버 인터페이스 제공
- 특정 장치 드라이버를 제공
7. 보안 관리 : 시스템 보호 및 오류로 인한 시스템 손상 방지
- 보호는 컴퓨터 자원에서 프로그램, 프로세스, 사용자의 접근을 제어하는 방법. 운영체제는 파일 사용 권한 부여, 데이터 암호화 등 서비스를 제공해 데이터와 시스템을 보안한다.
8. 명령어 해석 시스템 : 사용자와 시스템 간의 인터페이스, 인터페리터 ,쉘 등
- 사용자나 프로그램에서 대화형으로 입력한 명령어를 이해하고 실행하는 사용자와 운영체제의 인터페이스이다.
운영체제의 목적
처리능력 향상 : 일정 시간 내에 시스템이 처리하는 일의 양
사용가능도 향상 : 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
신뢰도 향상 : 시스템이 주어진 문제를 정확하게 해결하는 정도
반환 시간 단축 : 시스템에 작업을 의뢰한 시간부터 처리가 완료될 떄까지 걸린 시간
처리능력, 사용가능도, 신뢰도는 운영체제의 성능을 평가하는 기준이 된다.