CS 스터디/운영체제
1. 운영체제 소개
doobi
2023. 7. 16. 07:51
1. 운영체제란?
- 하드웨어를 제어하는 SW이고 유저와 하드웨어 사이에서 중계자로써 응용 프로그램 서비스를 제공하는 SW
- 응용 프로그램과 하드웨어 사이에 위치
- 사용자 -> 응용프로그램 : 서비스 요청
- 응용프로그램 -> 운영체제: 메세지 전달, 하드웨어 조작 요청
- 운영체제 : 서비스 작동
[정의]
- 컴퓨터 위에서 항상 실행되는 하나의 프로그램
- kernel로 정의
- 하드웨어를 제어하는 소프트웨어
- 유저와 하드웨어 사이의 중계자
2. 컴퓨터 시스템의 구성
- 부트스트랩(bootstrap)
- 컴퓨터 전력이 들어오자마자 제일 처음에 수행되는 프로그램
- 운영체제를 메모리에 적재하는 프로그램
- 부트스트랩 프로그램 수행 시, 디스크에 저장되어 있는 bootstrap loader를 CPU가 실행하여 디스크에 저장되어 있는 운영체제를 메모리에 올림(디스크 -> 메모리) - 인터럽트(Interrupt)
- 하드웨어가 작동중에 CPU에게 알려주는 신호
- 시스템 버스를 통해서 CPU에게 신호를 전송함으로써 인터럽트 발생 가능 - 폰 노이만 구조
- 폰 노이만이 제시한 프로그램 내장 방식
1. 명령어 가져오기: 메모리에서 명령어 Fetch, 명령어 레지스터에 명령어 저장
2. 명령어 실행하기: 명령어 해석하고, 필요한 정보를 가져온 후 실행
3. 인터럽트 체크 - 저장장치 계층
- 계층적 구조
1. 용량 기준(storage capacity)
2. 접근 속도 기준(access time)
- 속도 빠름 , 저장용량 적음
- Hard disk > solid-stt disk > main mem(램) > cache > 레지스터 - 입출력 구조
- CPU는 디바이스에게 입출력을 요청
- CPU와 디바이스는 서로 데이터 통신
- 디바이스에서 CPU로 인터럽트 전송가능
- CPU는 메모리로부터 명령을 실행 후 결과를 다시 메모리에 적재 가능
- 디바이스와 메모리는 DMA(Direct Memory Access) 가능
3. 컴퓨터 시스템의 구조
- 대칭형 다중 처리(Symmetric Multiprocessing, SMP)
- 각각의 CPU 프로세서가 모든 작업을 수행하는 가장 일반적인 다중 프로세서 시스템
- 여러개의 CPU - 멀티 코어 설계(Multi-core design)
- 하나의 물리적 CPU 칩 안에 여러개의 코어들이 포함됨
4. 운영체제 연산들
- 멀티프로그래밍
- 메모리에 여러개의 응용 프로그래밍을 적재
- 하나의 CPU가 하나의 프로그램만 실행 가능
- CPU가 하나의 프로그램이 대기중일때 다른 프로그램을 수행시켜 효율을 극대화 - 멀티태스킹(=멀티프로세싱)
- 멀티프로세싱이란 멀티프로그래밍의 논리적인 확장
- 프로그램들을 동시에 사용할 수 있게 하는 기술
- CPU가 동시에 수행되는 것처럼 프로그램들을 교체
- CPU스케쥴링을 통해 다음 실행 될 프로그램을 고름 - 운영체제 연산 2가지 모드
1. 유저 모드
- 사용자가 접근할 수 있는 영역을 제한적으로 두고, 프로그램의 자원에 함부로 침범하지 못하는 모드
- 유저 모드에서 코드를 작성하고, 프로세스를 실행하는 등의 행동을 할 수 있음
2. 커널 모드
- 커널 모드란 잘못된 프로그램으로 인해 다른 프로그램이 잘못 실행되지 않도록 하기 위해 사용되는 모드
- 커널 모드는 모든 자원(드라이버, 메모리, CPU 등)에 접근, 명령을 할 수 있음
5. 가상화(Virtualization)
- 하나의 컴퓨터 하드웨어 위에서 여러개의 다른 운영체제 실행하는 기술.
- 하드웨어에 VMM(Virtual Machine Manager) 를 올려서 사용
6. 컴퓨터 환경(Computing Environments)
- 일반적인 컴퓨터
- 모바일 컴퓨팅(Mobile Computing)
- 클라이언트-서버 컴퓨팅(Client-Server Computing)
- 클라이언트와 서버가 1:1 통신 - P2P 컴퓨팅(Peer-to-Peer Computing)
- 클라이언트끼리 N:M 통신 - 클라우드 컴퓨팅(Cloud Computing)
- 인터넷을 통해서 서버에 접속하는 컴퓨팅 환경 - 실시간 내장 시스템(Real-Time Embedded Systems)
[참고]
https://github.com/yonghwankim-dev/OperatingSystem_Study
https://yonghwankim-dev.tistory.com/186