1-1. 운영체제란?
컴퓨터 전체를 관리 및 운영하는 시스템 소프트웨어
하드웨어와 응용프로그램 관리
ex)
PC 운영체제: Windows, mac, unix, linux, ms-dos 등
모바일 운영체제: Android, iOS, 심비안, 타이젠, 바다 등
1-2. 운영체제 정의
커널(Kernerl)과 인터페이스(Interface)로 나뉨.
커널
1. 운영체제의 핵심 기능을 모아놓은 것으로 모든 컴퓨터의 자원을 관리.
2. 커널을 통해서만 컴퓨터 자원에 접근 가능
1-3. 운영체제 역할
역할
- 자원 관리: 컴퓨터 시스템 자원을 응용프로그램에 나눠줌, 여러 개의 프로그램이면 적당한 순서로 배분, 적절한 시점에 회수 후 다른 응용프로그램에 나눠줌
- 자원 보호
- 하드웨어 인터페이스 제공: 사용자가 간단히 장치를 사용할 수 있게 하드웨어 인터페이스 제공, 하드웨어를 일관된 방법으로 사용하게 지원
- 사용자 인터페이스 제공: 사용자가 운영체제 이용에 편리하게 지원
자원관리 - 메모리 관리, 프로세스 관리, 주변장치(입출력장치) 관리, 파일(데이터) 관리
시스템관리 - 시스템 보호(사용자 권한 부여), 네트워킹(통신), 명령 해석기
목표
자원 관리 ↔ 효율성
자원 보호 ↔ 안정성
HW 인터페이스 제공 ↔ 확장성
사용자 인터페이스 제공 ↔ 편리성
2. 작업 시스템
초기 컴퓨터(에니악(ENIAC; Electronic Numerical Intergrator And Calculator))
하드 와이어링 방식: 다른 작업을 하려면 전선을 다시 연결해야 함
일괄 작업 시스템(Batch Job System or Batch Processing System)
필요한 프로그램과 데이터를 동시에 입력해야 함.
운영체제가 사용되어 운영체제 영역과 사용자 영역으로 나뉨
천공카드 시스템: 프로그램만 바꾸면 다른 작업 가능(현대의 프로그래밍과 유사)
대화형 시스템
키보드와 마우스로 작업 중간에 입력, 중간 결과 값 확인 가능
작업의 흐름을 중간에 변경 가능
시분할 시스템
- CPU 사용시간을 잘게 쪼개 여러 작업에 나누어주어 모든 작업을 동시에 처리하는 것처럼 보임.(멀티프로그래밍/멀티태스킹)
- 나뉜 시간 한 조각을 타임 슬라이스, 타임 퀀텀이라고 함.
- 오늘날 대부분의 컴퓨터가 사용
- 단점: 여러 작업을 동시에 처리하기 위한 추가 작업 필요, 작업이 많으면 중요한 작업이 늦게 끝날 수 있다.
특정 시스템에서 일정 시간안에 작업이 처리되는 것을 보장하는 것: 실시간 시스템(real-time system)
분산 시스템
네트워크상에 분산되어 있는 여러 컴퓨터로 작업을 처리하고 결과를 상호 교환
클라이언트/서버 시스템
작업을 요청하는 클라이언트와 요청받은 작업을 처리하는 서버의 이중구조
문제점: 서버로 요청이 집중되어 과부화 됨.
P2P 시스템
사용자와 사용자를 직접 연결, 메신저나 토렌트에 사용
클라이언트/서버 시스템의 서버 과부화 해결
블록체인(서버가 없는 완전한 P2P 시스템)
클라우드 컴퓨팅
하드웨어와 소프트웨어를 클라우드라는 시스템에 숨기고 사용자는 필요한 서비스만 사용
그리드 컴퓨팅 기술 사용
사물인터넷
사물이 인터넷에 연결된 시스템, 무선으로 업데이트 배포 받음
3-1. 시스템 호출과 디바이스 드라이버
시스템 호출
커널이 자신을 보호하기 위해 만든 인터페이스
사용자나 응용 프로그램의 직접 접근을 차단 → 시스템 호출을 사용해야만 접근 가능
시스템 호출을 통한 접근: ex) 응용 프로그램이 직접 HDD에 저장하지 않고 커널이 제공하는 write() 함수로 저장 요청 → 자원 관리 유리
디바이스 드라이버
커널과 하드웨어의 인터페이스를 담당
3-2. 커널의 역할과 종류
커널이 하는 일
- 프로세스 관리
- 메모리관리
- 파일 시스템 관리
- 입출력 관리
- 프로세스 간 통신 관리
단일형 구조 커널
- 초창기 운영체제 구조
- 커널의 핵심 기능을 구현하는 모듈들이 구분없이 하나로 구성
장점: 모듈간의 통신 비용이 줄어서 효율적
단점: 모든 모듈이 하나로 묶여 있어 버그나 오류 처리 어려움, 기능상의 작은 결함이 시스템 전체로 확산 될 수 있음, 다양한 환경에 적용 어려움, 복잡한 운영체제 구현이 어려움
계층형 구조 커널
비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간의 통신으로 운영체제 구현
마이크로 구조 커널
- 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등의 기본적인 기능만 제공
- 각 모듈은 세분화 되어 존재, 모듈 간의 정보 교환은 프로세스 간 통신을 이용
가상 머신
- 운영체제와 응용 프로그램 사이에서 작동하는 프로그램
- 가상머신을 설치하면 응용 프로그램이 모두 동일 환경에서 작동하는 것처럼 보임
4. 유닉스와 리눅스
유닉스의 개발과 확산
이식하기 쉬움, 소스코드가 공개됨 → 다른 운영체제로 발전
리누스 토르발스가 유닉스 호환 커널을 작성하여 GPL로 배포, 소스코드 공개 → 리눅스의 시작
Mac OS: 마우스를 이용하는 GUI를 처음 도입
'Computer Science > 운영체제' 카테고리의 다른 글
5. 프로세스 동기화 (0) | 2024.08.01 |
---|---|
4. CPU 스케줄링 (0) | 2023.10.16 |
3. 프로세스와 스레드 (0) | 2023.10.16 |
2. 컴퓨터 구조와 성능 향상 (0) | 2023.10.16 |