운영체제
- 사용자와 하드웨어 사이의 중간 매개체로 응용 프로그램의 실행을 제어(가상기계)
- 자원을 할당 및 관리하며, 입출력 제어 및 데이터 관리와 같은 서비스를 제공하는 소프트웨어(자원관리자)
역할
- 하드웨어 및 사용자, 응용 프로그램, 시스템 프로그램 사이에서 인터페이스를 제공 (가상기계)
- 프로세서, 메모리, 입출력장치, 통신장치 등 컴퓨터 자원을 효과적으로 활용하려고 조정·관리 (자원관리자)
- 메일 전송, 파일 시스템 검사, 서버 작업 등 높은 수준의 서비스를 처리하는 응용 프로그램을 제공(가상기계)
- 다양한 사용자에게서 컴퓨터 시스템을 보호하려고 입출력을 제어하며 데이터를 관리 (자원관리자)
컴퓨터 시스템
하드웨어는 프로세서, 메모리(기억장치), 주변장치로 구성되고, 시스템 버스로 연결되어 있음
CPU
- 중앙처리장치
- 운영체제와 가장 밀접한 부분으로, 컴퓨터의 모든 장치의 동작을 제어하고 연산 수행
- 제어장치(Control Unit), 연산장치(ALU, Artihmetic), 레지스터, 버스로 구성
- 제어장치(Control Unit)는 컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치
- 제어장치의 구성요소
- 명령 레지스터 : 현재 실행중인 명령어의 내용을 기억하고 있습니다.
- 명령 해독기(Decoder) : 명령 레지스터에 있는 명령어를 해독하는 회로입니다.
- 제어신호 발생기, 부호기(Encoder) : 해독된 명령에 따라 각 장치로 보낼 제어 신호를 생성하는 회로입니다.
- 제어 주소 레지스터(CAR) : 다음에 실행할 마이크로명령어의 주소를 저장하는 레지스터로, Mapping의 결과값, 주소 필드, 서브루틴 레지스터의 내용들이 적재되어 있습니다.
- 제어 버퍼 레지스터(CBR) : 제어 기억장치로부터 읽혀진 마이크로명령어 비트들을 일시적으로 저장하는 레지스터입니다.
- 제어 기억장치 : 마이크로 명령어들로 이루어진 마이크로명령어 비트들을 일시적으로 저장하는 레지스터입니다.
- 순서 제어 모듈 : 마이크로명령어의 실행 순서를 결정하는 회로들의 집합입니다.
- 순차카운터(Sequence counter) : 디코더에 의해 선택된 번호에 해당하는 타이밍신호를 생성합니다.
- 제어장치의 구성요소
- 연산장치(ALU, Artihmetic)는 제어장치의 명령에 따라 실제로 연산을 수행하는 장치
- 연산장치가 수행하는 연산에는 산술연산, 논리연산, 관계연산, 이동등이 있으며 연산장치는 가산기, 누산기, 보수기, 데이터 레지스터, 오버플로 검출기, 시프트레지스터등으로 구성
- 레지스터(Register)는 CPU 내부에서 처리할 명령어나 연산의 중간 결과값 등을 일시적으로 기억하는 임시 기억장소
- 버스는 CPU, 메모리, I/O 장치 등과 상호 필요한 정보를 교환하기 위해 연결된 공동의 전송선
- 번지 버스(Address Bus) : CPU가 메모리나 입 출력기기의 번지를 지정할 때 사용하는 단방향 전송선
- 자료 버스(Data Bus) : CPU와 메모리 또는 입 출력 기기 사이에서 데이터를 전송하는 양방향 전송선
- 제어 버스(Control Bus) : CPU의 현재 상태나 상태 변경을 메모리 또는 입출력장치에 알리는 제어신호를 전송하는데 사용하는 양방향 전송선
- 제어장치(Control Unit)는 컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치
레지스터
- CPU 내부에 존재하는 고속의 저장장소. CPU에서의 빠른 자료활용을 위해 사용
메모리
- RAM(Random Access Memory)
- 임의 액세스 메모리
- CPU가 RAM 메모리의 모든 주소 위치에 직접 액세스
- 휘발성 메모리
- ROM(Read-only memory)
- 읽기 전용 메모리
- 비 휘발성 메모리
버스
- 하드웨어를 물리적으로 연결하여 서로 데이터를 주고받을 수 있게 하는 통로
- 컴퓨터 내부의 다양한 신호(데이터 입출력 신호, 프로세서 상태 신호, 인터럽트 요구와 허가 신호,클록clock 신호 등)를 시스템 버스로 전달
- 기능에 따라 데이터 버스, 주소 버스, 제어 버스로 구분
데이터 버스 | 프로세서와 메인 메모리, 주변장치 사이에서 데이터를 구성하는 배선 수는 프로세서가 한 번에 전송할 수 있는 비트 수를 결정하는데, 이를 워드라고 한다. |
주소 버스 | 프로세서가 시스템의 구성 요소를 제어하는 데 사용한다. 제어 신호로 연산장치의 연산 종류와 메인 메모리의 읽기나 쓰기 동작을 결정한다. |
제어 버스 | 프로세서가 시스템의 구성 요소를 제어하는 데 사용한다. 제어 신호로 연산장치의 연산 종류과 메인 메모리의 읽기나 쓰기 동작을 결정한다. |
부트스트래핑(booting / bootstrapping)
- 운영체제를 메인 메모리에 적재하는 과정
- 부트로더는 부트스트랩 로더bootstrap loader 줄인 말로 하드디스크와 같은 보조기억장치에 저장된 운영체제를 메인 메모리에 적재하는 ROM에 고정시킨 소규모 프로그램
인터럽트 (Interrupts)
- CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 처리할 수 있도록 하는 것
- 선점형 스케쥴러 구현
- 프로세스 running 중에 스케쥴러가 이를 중단시키고, 다른 프로세스로 교체하기 위해, 현재 프로세스 실행을 중단시킴
- 그러려면, 스케쥴러 코드가 실행이 되서, 현 프로세스 실행을 중지시켜야 함
- 프로세스 running 중에 스케쥴러가 이를 중단시키고, 다른 프로세스로 교체하기 위해, 현재 프로세스 실행을 중단시킴
- IO Device와의 커뮤니케이션
- 저장매체에서 데이터 처리 완료시, 프로세스를 깨워야 함 (block state -> ready state)
- 예외 상황 핸들링
- CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생할 경우, CPU가 해당 처리를 할 수 있도록 CPU에 알려줘야 함
Operating System Operations
- Multiprogramming : 동시에 여러 프로그램이 병렬로 수행되는 것
- Multitasking(= multiprocessing)
- 논리적으로 멀티프로그래밍을 확장한 것
- 시분할. 시간 아까우니까 시간을 나눠서 CPU 사용 (concurrency)
- CPU Scheduling
- CPU 효율을 제일 높게 만드는 선택 방법
- 운영체제의 두가지 오퍼레이션 모드 : 유저모드와 커널모드
Virtualization
H/W 위에 VMM(버츄얼 머신 매니저, WSL, VMware, XEN)를 띄워서 여러 OS를 띄움
Computing Environments
- traditional computing
- mobile computing
- client-server computing (web)
- peer-to-peer computing (더 나아가 blcok chain)
- cloud computing (aws, azure, gcp)
- Real-Time Embedded System (화상탐사, 라즈베리파이)
Operating System Services
어떤 컴퓨터 프로그램이 실행될 수 있도록 환경을 제공해주는게 OS
- User Interface
- Program execution
- I/O operation
- File-system manipluation
- Communications
- Error detection
- Resource allocation
- Logging
- Protection and Securty
User and Operating-System Interface
OS에 인터페이스 하기 위한 방법
- CLI(Command Line Interface)
- shell : sh, bash, csh, tcsh, zsh, etc.
- GUI(Graphical User Interface)
- Windows, Aua for MacOS, KDE/GNOME for Linux, etc.
System Calls
- System call
- OS 가 프로그램들에게 제공하는 인터페이스 ⇒ OS의 API
'CS > 운영체제' 카테고리의 다른 글
Thread의 이해 (0) | 2023.03.03 |
---|
댓글