일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Nodejs
- python
- 프로그래머스
- AWS
- 컴포넌트스캔
- 가상면접사례로배우는대규모시스템설계기초
- 해시
- Spring
- 코테
- 카카오 알고리즘
- 카카오 코테
- 코딩테스트
- nestjs auth
- 시스템호출
- spring boot
- thymeleaf
- C언어
- 카카오
- nestJS
- 구조체배열
- 파이썬
- @Autowired
- 스프링
- git
- C++
- nestjs typeorm
- TypeORM
- @Component
- OpenCV
- 알고리즘
Archives
- Today
- Total
공부 기록장 💻
[운영체제/OS] 01장 운영체제의 개요 본문
01 운영체제의 개요
운영체제의 필요성
- 프로그래밍이 가능한(programmable) 기계: 새로운 기능의 추가나 성능의 변경이 가능
- 자원 관리(resource management)
- 컴퓨터 자원(키보드, CPU, 메모리, 주변장치-하드디스크, 마우스, 사운드카드, 그래픽카드, 네트워크카드, 터치패드)에 사용자가 직접 접근하는 것을 막음으로써 자원을 보호하고 관리
- 하드디스크의 특정 위치에 데이터를 저장할 수 없음
- 운영체제가 다양한 인터페이스를 제공함으로써 컴퓨터 자원을 관리하고 보호
- 응용 프로그램(워드 프로세서, 웹 브라우저, 채팅, 음악 재생 SW)에게 컴퓨터 자원을 골고루 배분하고 및 회수하고, 응용 프로그램이 활동할 수 있는 환경을 제공
- 컴퓨터 자원(키보드, CPU, 메모리, 주변장치-하드디스크, 마우스, 사운드카드, 그래픽카드, 네트워크카드, 터치패드)에 사용자가 직접 접근하는 것을 막음으로써 자원을 보호하고 관리
운영체제의 정의
- 운영체제: 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어
- 응용 프로그램이나 사용자에게 컴퓨터 자원을 사용할 수 있는 인터페이스를 제공하고 그 결과를 반환
- 모든 컴퓨터 자원을 숨기고 정해진 방법으로만 컴퓨터 자원을 사용할 수 있도록 제한
운영체제의 역할과 목표
- 자원 관리 → 효율성
- 컴퓨터 자원을 요청한 여러 응용 프로그램에게 적당한 순서로 자원을 배분하고 적절한 시점에 자원을 회수하여 나누어주는 역할
- 자원 보호 → 안전성
- 백신 유틸리티 - 바이러스 검사, 디스크 조각 모음, 압축 프로그램 등 지원
- 하드웨어 인터페이스 제공 → 확장성
- CPU, 메모리, 키보드, 마우스와 같은 다양한 HW를 일관된 방법으로 사용할 수 있도록 지원
- 하드웨어 인터페이스가 자동으로 설치되게 함
- 드라이버 설치: 하드웨어 장치와 상호작용하기 위해 만들어진 컴퓨터 프로그램으로, OS를 설치할 때 자동으로 설치
- 사용자 인터페이스 제공 → 편리성
- GUI(그래픽 사용자 인터페이스) 제공
02 운영체제의 역사
- 일괄 작업 시스템(batch job system) - 1950
- 작업에 필요한 프로그램과 데이터를 동시에 입력해야 작업이 가능하며 작업의 최종 결과만 얻을 수 있음
- 프로그램 실행 중간에 사용자가 데이터를 입력, 수정이 불가능
- 대화형 시스템(interactive system) - 1960 초
- 키보드와 모니터의 등장과 함께 프로그램 진행 도중 사용자로부터 입력 받아 입력값에 따른 작업의 흐름 변경 가능
- 컴퓨터-사용자의 대화를 통해 작업이 이루어짐
- 시분할 시스템(time sharing system, multitasking) - 1960 후
- 다중 프로그래밍 기술 개발 - 하나의 CPU로 여러 작업을 동시에 실행하는 기술
- 시분할 시스템 - CPU 사용 시간을 잘게 쪼개(타임 슬라이스-time slice, time quantum) 여러 작업에 분배하여 모든 작업이 동시에 처리되는 것처럼 보이는 시스템
- 실시간 시스템(real-time system) - 중요한 특정 시스템에서 일정 시간 안에 작업이 처리되도록 보장하는 시스템
- 다중 사용자 시스템: 하나의 컴퓨터에서 여러 명이 작업할 수 있도록 한 시스템
- 멀티프로그래밍 수준(level of multiprogramming): 시분할 시스템에서 동시에 실행되는 작업의 개수
- 일괄 작업 시스템의 멀티프로그래밍 수준: 1
- 멀티프로그래밍 수준(level of multiprogramming): 시분할 시스템에서 동시에 실행되는 작업의 개수
- 분산 시스템(distributed system) - 1970 후
- 메인프래임 이후 개인용 컴퓨터와 인터넷(네트워킹시스템)의 보급 이후 등장
- 네트워크 상에 분산되어 있는 여러 컴퓨터로 작업을 처리하고 그 결과를 상호 교환하도록 구성한 시스템
- 모든 컴퓨터의 지위가 동일
- 클라이언트/서버 시스템 - 1990~
- 클라이언트: 작업 요청, 서버: 요청받은 작업을 처리하여 응답
- 웹 시스템 등장
- 문제점: 서버 과부화 - 모든 요청이 서버로 집중되는 현상
- 데몬(daemon): 서버가 멈추지 않고 계속 작동하여 클라이언트의 요청을 처리하도록 하는 프로그램
- 서버: 데몬을 가진 컴퓨터
- 웹 데몬이 설치된 컴퓨터: 웹서버
- ex) 아파치 톰캣, IIS
- 데몬(daemon): 서버가 멈추지 않고 계속 작동하여 클라이언트의 요청을 처리하도록 하는 프로그램
- P2P 시스템(Peer to peer system) - 2000~
- 서버 부하를 줄일 수 있는 새로운 시스템으로 도입
- 서버를 거치지 않고 사용자와 사용자를 직접 연결
- ex) 메신저
- 수만명이 동시에 채팅을 하고 파일을 주고받는 메신저 시스템은 P2P 기술을 이용해 서버 부하 없이 구현
- ex) 서버가 없는 P2P 시스템의 파일 공유 (비트코인의 블록체인)
- 은행 DB의 장부에 기록 X
- P2P 시스템 전체에 거래 장부를 분산시켜 장부의 조작이나 유실이 거래에 영향을 미치지 않도록 함
- 그리드 컴퓨팅
- 필요한 컴퓨팅 자원을 구매하여 사용하는 분산 시스템 분야의 컴퓨팅 환경
- 서로 다른 기종의 컴퓨터들을 묶어 대용량의 컴퓨터 풀을 구성하여, 원격지와 연결하여 대용량 연산을 수행하는 컴퓨팅 환경
- ex) 웹 하드 서비스
- 데이터 전송 시 대용량 데이터 P2P 시스템 기술 사용
- ex) SaaS(Software as a Service)
- 사용자가 필요할 때 소프트웨어 기능을 이용하고 그만큼만 비용을 지불하는 개념
- 필요한 기능을 모아 서버에서 실행하고 인터넷을 통해 필요한 서비스만 제공받으며 월별로 혹은 서비스 이용량 만큼 비용을 지불
- 클라우드 컴퓨팅
- 그리드 컴퓨팅과 SaaS를 합쳐놓은 형태
- 사물 인터넷
- 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술
03 운영체제의 구조
1. 커널과 인터페이스
- 커널(Kernel): 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것
- ex) C프로그래밍의 메모리 동적 할당(메모리의 물리적인 공간을 사용-malloc, calloc)
- 인터페이스(interface): 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할
- 셸(shell): 유닉스의 사용자 인터페이스(명령 프롬프트 창)
- OS는 커널과 인터페이스를 분리하여 같은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작이 가능하다. (유닉스의 UI는 셸(명령어 기반)을 사용, Mac OS X는 GUI)
2. 시스템 호출과 드라이버
시스템 호출(System Call)
- 커널이 자신을 보호하기 위해 만든 인터페이스
- 사용자, 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단하므로, 자원 이용(CPU. 메모리 리소스 사용)을 위해서는 시스템 호출을 통해 작업을 요청하고 결과를 반환 받음
- 응용 프로그램이 HW자원에 접근하거나 OS가 제공하는 서비스를 이용하려 할 때는 시스템 호출을 사용해야 함
- → System programming, 임베디드 소프트웨어와 관련이 있음
- 직접 접근(메모리 주소에 직접 접근하여 데이터를 저장)하여 데이터를 왜곡, 오염 시킬 수 있는 상황을 막아 System Call을 통해 커널이 데이터를 가져오거나 저장하는 것을 전적으로 책임지고 제어함
- 시스템 호출: 커널이 제공하는 시스템 자원의 사용과 연관된 함수
- ex) write() 함수를 사용해 데이터를 저장하도록 요청, read() 함수로 데이터를 읽어 들임
- ex) C언어에서의 printf()
드라이버
- 커널 ↔ 하드웨어의 인터페이스를 담당, 하드웨어를 제어하는 일종의 인터페이스
- 커널은 입출력의 기본적인 부분만 제작, 하드웨어의 특성을 반영한 SW(디바이스 드라이버)를 HW 제작사에게 받아 커널이 실행될 때 함께 실행되도록 함
- ex) 마우스, 키보드와 같은 단순한 디바이스 드라이버는 커널에 포함
- ex) 그래픽카드, 프린터와 같이 복잡한 디바이스 드라이버는 사용자가 직접 설치 필요
- ex) 프린터 드라이버: 응용프로그램으로부터 인쇄 명령을 받아 커널이 명령을 받아 프린터기를 제어하는 드라이버에 전달
- 커널이 제공하는 드라이버도 있고, 하드웨어 제작사가 제공하여 설치해야 하는 드라이버도 있음
3. 커널의 구성
- 커널: 운영 체제의 핵심 기능을 모아 놓은 것
커널의 역할
1. 프로세스 관리
- 프로세스: 메모리에 instance된 프로그램
- 프로세스 간의 동기화 실패 시, Deadlock이라는 현상 발생
- CPU Scheduling: 누가 CPU를 사용할 것인가
2. 프로세스 간 통신 관리(IPC, Inter-Process Communication)
- 멀티 프로세스
- ex) 카카오톡 - 파일을 다운로드 받으면서도 다른 친구와 채팅을 가능케 하는 것
3. 파일 시스템 관리
- 어떤 방식으로 데이터를 저장할 것인가?
4. 출력 관리
- 입출력 제어기: 외부 HW 디바이스와의 독립적인 연결 허용
커널의 구조
- 커널의 핵심 기능들은 유기적으로 복잡하게 얽혀 있는데, 이러한 기능을 어떻게 구현하는가에 따라 단일형 구조 커널, 계층형 구조 커널, 마이크로 구조 커널로 구분됨
1. 단일형 구조 (monolithic architecture) 커널
- 초창기 운영체제 구조
- 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성
- 장점: 모듈 간의 통신 비용이 줄어들어 효율적인 운영이 가능
- 단점
- 모든 모듈이 하나로 묶여 있어 버그나 오류를 처리하기 어려움
- OS의 여러 기능이 서로 연결되어 있어 상호 의존성이 높기 때문에 기능 상의 작은 결함이 시스템 전체로 확산될 수 있음
- 다양한 환경의 시스템에 적용하기 어려움
- 현대의 운영체제는 매우 크고 복잡하기 때문에 완전 단일형 구조의 OS를 구현하기 어려움
- 범용 환경 OS에서는 단일형을 사용하지 않지만, 특수 목적을 위한 Embedded System에서는 여전히 단일형 구조 커널을 사용하고 있음
2. 계층형 구조(layered architecture) 커널
- 비슷한 기능을 가진 모듈을 묶어 하나의 계층으로 만들고, 계층 간의 통신을 통해 OS를 구현하는 방식
- 비슷한 기능을 모아 모듈화 했기 때문에 버그나 오류를 쉽게 처리할 수 있고, 오류 발생 시 해당 계층만 따로 수정하면 되기 때문에 디버깅하기도 쉬움
- ms-windows를 포함해 오늘날의 OS의 대부분의 구조
3. 마이크로 구조(micro architecture) 커널
- 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공
- 운영체제의 많은 부분이 사용자 영역에 구현되어 있음
- 커널이 메모리 관리, 프로세스 간의 동기화 서비스를 제공하고, 메모리 관리자와 동기화 모듈은 프로세스 간 통신 모듈로 연결되어 있음
- 커널의 각 모듈은 세분화되어 존재하고 모듈 간의 정보 교환은 프로세스 간 통신을 이용하여 이루어짐
- 각 모듈이 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체 OS가 멈추지 않고, 많은 컴퓨터에 이식이 쉽고 커널이 가벼워 CPU 용량이 작은 시스템에도 적용 가능
4. 가상 머신(Virtual Machine)
- OS와 응용 프로그램 사이에서 작동하는 프로그램
- VM을 설치하면 응용 프로그램이 모두 동일한 환경에서 작동하는 것처럼 보임 (사물인터넷 IOT에서 활용됨)
- 자바 - 유닉스와 윈도우에서 작동하는 다양한 VM을 만들어 배포하는데 이를 JVM이라고 함 (일종의 Middleware)
728x90
반응형
'# CS Study > Opearing System' 카테고리의 다른 글
[운영체제/OS] 쉽게 배우는 운영체제 03장 문제 풀이 (프로세스) (0) | 2022.08.21 |
---|---|
[운영체제/OS] 03장 프로세스 (0) | 2022.08.21 |
[운영체제/OS] 쉽게 배우는 운영체제 2장 문제풀이 (컴퓨터의 구조와 성능 향상) (0) | 2022.08.20 |
[운영체제/OS] 02장 컴퓨터의 구조와 성능 향상 (0) | 2022.08.20 |
[운영체제/OS] 쉽게 배우는 운영체제 1장 문제 풀이 (운영체제의 개요) (0) | 2022.08.20 |
Comments