운영체제와 컴퓨터
운영 체제란 무엇인가?
운영 체제(OS, Operating System)
: 하드웨어와 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.
즉, 운영 체제는 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어라고 할 수 있다.
(종류로는 Windows, Linux, UNIX, MS-DOS 등이 있으며, 시스템의 역할 구분에 따라 각각 용이점이 있다.)
[운영체제의 목적]
1. 처리 능력
일정 시간 내에 시스템이 처리하는 일의 양
2. 반환 시간
시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
3. 사용 가능도
시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
4. 신뢰도
시스템이 주어진 문제를 정확하게 해결하는 정도
[ 운영체제의 역할 ]
1. 프로세스 관리
: CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리
- 프로세스, 스레드
- 스케줄링
- 동기화
- IPC 통신
운영체제에서 작동하는 응용 프로그램을 관리하는 기능이다.
어떤 의미에서는 프로세서(CPU) 관리하는 것이라고 볼 수도 있다. 현재 CPU를 점유해야 할 프로세스를 결정하고, 실제로 CPU를 프로세스에 할당하며, 이 프로세스 간 공유 자원 접근과 통신 등을 관리하게 된다.
2. 저장장치 관리
: 메모리 및 파일 저장 관리
- 메모리 관리
- 가상 메모리
- 파일 시스템
1차 저장장치에 해당하는 메인 메모리와 2차 저장장치에 해당하는 하드디스크, NAND 등을 관리하는 기능이다.
- 1차 저장장치(Main Memory)
- 프로세스에 할당하는 메모리 영역의 할당과 해제
- 각 메모리 영역 간의 침범 방지
- 메인 메모리의 효율적 활용을 위한 가상 메모리 기능
- 2차 저장장치(HDD, NAND Flash Memory 등)
- 파일 형식의 데이터 저장
- 이런 파일 데이터 관리를 위한 파일 시스템을 OS에서 관리
FAT, NTFS, EXT2, JFS, XFS
등 많은 파일 시스템들이 개발되어 사용 중
3. 네트워킹
: 사용자와 컴퓨터 하드웨어 사이에 위치해서, 하드웨어를 운영 및 관리하고 명령어를 제어하여 응용 프로그램 및 하드웨어를 소프트웨어적으로 제어 및 관리
- TCP/IP
- 기타 프로토콜
4. 사용자 관리
: 사용자 계정 관리
- 계정 관리
- 접근권한 관리
운영체제는 한 컴퓨터를 여러 사람이 사용하는 환경도 지원해야 한다. 가족들이 각자의 계정을 만들어 PC를 사용한다면, 이는 하나의 컴퓨터를 여러 명이 사용한다고 말할 수 있다.
따라서, 운영체제는 각 계정을 관리할 수 있는 기능이 필요하다. 사용자 별로 프라이버시와 보안을 위해 개인 파일에 대해선 다른 사용자가 접근할 수 없도록 해야 한다. 이 밖에도 파일이나 시스템 자원에 접근 권한을 지정할 수 있도록 지원하는 것이 사용자 관리 기능이다.
5. I/O 디바이스 관리
: I/O 디바이스(마우스, 키보드)와 컴퓨터 간 데이터를 주고받는 것을 관리
- 순차접근 장치
- 임의접근 장치
- 네트워크 장치
운영체제는 시스템의 자원, 하드웨어를 관리한다. 시스템에는 여러 하드웨어가 붙어있는데, 이들을 운영체제에서 인식하고 관리하게 만들어 응용 프로그램이 하드웨어를 사용할 수 있게 만들어야 한다.
따라서, 운영체제 안에 하드웨어를 추상화 해주는 계층이 필요하다. 이 계층이 바로 디바이스 드라이버라고 불린다. 하드웨어의 종류가 많은 만큼, 운영체제 내부의 디바이스 드라이버도 많이 존재한다.
이러한 수많은 디바이스 드라이버들을 관리하는 기능 또한 운영체제가 맡고 있다.
[운영체제의 종류]
1. 윈도우즈
- 그래픽 사용자 인터페이스(GUI)
- 선점형 멀티태스킹
- PnP
- OLE
- 255자의 긴 파일명
- Single-User 시스템
2. UNIX
- 시분할 시스템을 위해 설계된 대화식 운영체제
- 소스가 공개된 개방형 시스템
- 대부분 C언어로 작성되어 이식성 높으며 장치, 프로세스 간 호환성이 높다
- 다중 사용자, 다중 작업 지원
- 트리 구조 파일 시스템
UNIX 구성
- 커널
- 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할 담당
- UNIX 의 가장 핵심적인 부분
- 프로세스(CPU 스케줄링) 관리, 기억장치 관리, 파일 관리, 입출력 관리, 프로세스 간 통신, 데이터 전송 및 변환 등 여러가지 기능 수행
- 쉘
- 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기
- 시스템과 사용자 간 인터페이스 담당
3. LINUX
- UNIX 기반 개발된 운영체제
- 오픈 소스
4. MacOS
5. Android
- 자바와 코틀린으로 애플리케이션 작성
6. iOS
[참고 자료 및 주제와 관련하여 참고하면 좋은 곳 링크]
- 도서 - '도전 임베디드 OS 만들기' ( 이만우 저, 인사이트 출판 )
- 글 - '운영체제란 무엇인가?' ( https://coding-factory.tistory.com/300 )
Reference
'CS > 운영체제' 카테고리의 다른 글
4. 멀티 프로세스와 멀티 스레드 (0) | 2024.07.12 |
---|---|
3. 멀티 태스킹과 PCB와 컨텍스트 스위칭 (0) | 2024.07.12 |
2. 프로그램과 프로세스, 스레드 (0) | 2024.07.12 |
동기와 비동기 (0) | 2021.12.25 |
캐시 (0) | 2021.11.21 |