운영체제 배경지식
1) 커널, 셸
운영체제는 Kernel(핵심적인 기능)과 Interface(사용자의 편의) 로 나눌 수 있음. 커널이 같다고 할지라도, 인터페이스에 따라 서로 다른 운영체제처럼 보이기도 함. 예를 들어, 유닉스와 OS X 는 같은 계열의 커널을 사용하였음.
사용자 interface를 shell(셸)이라고 함.
(텍스트 기반-cmd, 그래픽 기반 – 윈도우즈 등)
2) System Call
현대의 운영체제에서는 하드웨어와 같은 시스템자원에 접근하기 위해서는 kernel이 제공하는 System Call을 호출하여야 함. 예를 들어, printf, read, write 등의 시스템 호출로 하드웨어에 접근할 수 있다.
응용프로그램이 하드웨어를 접근하려 할 때나, 운영체제가 제공하는 서비스를 이용하고자 할때는 시스템 호출을 사용해야 함. 사용자가 자발적으로 커널영역에 진입할 수 있는 유일한 수단이다.
3) 폰 노이먼 구조(Von Neumann Architecture)
현대 컴퓨터의 대부분은 폰 노이먼 구조를 따른다.
Computer = CPU + 메모리(RAM 등의 휘발성 저장장치) + BUS
폰 노이먼 구조의 가장 중요한 특징 : 모든 프로그램은 메모리로 올라와야지만 실행이 가능하다. 현대의 컴퓨터구조에서는 운영체제조차도 저장장치로부터 메모리로 올라와야 실행가능.
4) 단위
CPU 3.5GHZ – CPU가 1초에 3.5*2^30번 작업한다는 의미.
(2^10 = KB, 2^20=MB, 2^30=GB)
5) CPU
CPU = ALU(Arithmetic and Logic Unit : 산술 논리 연산 장치)
+ register + control unit(제어장치)
ALU - 기초적인 수학연산, 논리연산 담당
register – 연산에 필요한 명령어, 데이터들 저장
control unit – 명령어 해석, 데이터 흐름 조절, 외부장치에 명령 전달
6) BUS
Back-side bus – CPU내부에 존재하는 버스. 속도가 빠름
Front-side bus - CPU와 메모리 및 다른 장치들을 연결, 메인보드에 존재
- System Bus 라고도 불리며 속도가 느림.
control bus(제어) - cpu가 명령을 내리기 위해 사용하는 통로
data bus(데이터) - 데이터를 전송하는 통로
address bus(주소) - 주소 정보 전달 통로
7) register
CPU내부에 있는 메모리로 메인 메모리보다 동작속도가 빠르다.
데이터를 저장하는 일반적인 레지스터 외에 특수한 용도로 사용되는 레지스터들이 존재
1] 프로그램 수행관련
IR(Instruction Register : 명령어) - 현재 수행중인 명령어를 임시로 저장하는 레지스터
PC(Program Counter) - 다음번 실행될 명령어의 위치를 저장하는 레지스터. 한줄마다 1씩 증가
2] CPU와 메모리 사이의 데이터 전송 관련
1. MAR(Memory Address Register) - 다음번에 읽거나 쓸 메모리의 주소를 넣으면, 메모리 관리자가 인식하여 처리. 주소버스와 연결
2. MBR(Memory Buffer Register) - 메모리로부터 가져온 데이터 혹은 메모리로 가져갈 데이터를 임시적으로 저장하는 곳. 데이터 버스와 연결. MAR과 함께 움직임.
8) 메모리
메모리는 CPU가 직접 접근할수 있는 장치.
작업에 필요한 모든 프로그램과 데이터가 존재하는 공간
실제로 작업이 이루어지는 장소
1)RAM(Random Access Memory) - 저장되어 있는 위치에 상관없이 무작위로 읽는 속도가 같다는 의미. 휘발성(DRAM-메인 메모리), 비휘발성(SSD) 2종류 존재.
2)ROM(Read Only Meomory) - 주로 BIOS에 국한.
9) 제 2저장장치
모든 프로그램은 메모리로 올라와야만 실행가능.
작업의 결과나 데이터를 보관하는 장소.
하드디스크, CD 등.
10) Buffer(버퍼)
속도 차이가 나는 기계 사이에서 차이를 완화시켜주는 장치
일정량의 데이터를 모아 한번에 전달되도록 하여 효율을 높인다.
버퍼를 사용하게 되면 버퍼가 다 채워질때까지 컴퓨터는 데이터의 전송을 지연시킨다.(하드웨어 안전제거 의 역할)
11) Cache(캐시)
버퍼의 일종. CPU와 메인메모리 사이에 사용하여 속도차이를 완화시킨다.
CPU가 다음에 작업할 내용을 미리 예측하여, 메모리의 내용 중 일부를 미리 가져온다. 캐시 적중률(원하는 데이터 발견)이 높을수록 성능 UP
12. Interrupt(인터럽트)
과거에는 polling 방식 사용 – CPU가 모든 주변 장치 직접관리, 계산 외에 입출력 작업까지 담당하므로 속도가 느림.
Interrupt 방식 – 데이터의 입출력이 이루어 지는동안 CPU가 다른 작업을 할수 있음. 성능 향상. Interrupt number 사용(많은 주변 장치 중 어떤 장치의 작업이 끝났는지 알려주기 위해 장치의 이름 대신 사용하는 고유번호)
13. 부팅(Booting)
운영체제도 프로그램이기 때문에 메모리에 올라와야지만 실행 가능.
컴퓨터의 전원이 켜지고, 운영체제가 메모리에 올라오는 전 과정을 부팅이라고 함.
1) 전원을 켜면, 메인보드의 ROM에 담겨진 BIOS(Basic Input/Output System - 컴퓨터를 이루는 주요 부품들 체크) 실행.
2) 통과하면, MBR(Master Boot Record)에 저장된 코드를 메모리로 가져와 실행. 이곳에 운영체제를 실행하기 위한 코드인 bootstrap(자신과 연관있는 운영체제를 메모리로 가져와 실행시키는 프로그램 – 유닉스용 부트스트랩이 실행되면 유닉스가, 윈도우용이 실행되면 윈도우가 실행) 이 담겨져 있음.
14. 명령어 처리과정
ALU는 명령어를 가져오고, 해석하여 실행하고, 저장하는 과정 계속 반복.
이 과정은 한 클록에 1번씩 이루어 진다.
1) Fetch - PC 로부터 다음번 실행할 명령어를 가져와 IR에 저장
2) Decode – 명령어 해석
3) Excution – 실행
4) Write – 결과를 메모리에 저장
흠..
답글삭제