운영체제의 개념, CPU의 메커니즘

2023. 3. 12. 18:19컴퓨터 기초

<운영체제>

1. 운영체제의 개념

운영체제(OS: Operating System)란 사용자와 하드웨어 사이의 중간 매개체로써, 응용 프로그램의 실행 제어, 자원 할당 및 관리, 입출력 제어 및 데이터 관리 등의 서비스를 제공한다.

1.1. Embedded OS: CPU와 램의 성능이 낮은 시스템에 내장된 운영체제

1.2. Firmware: ROM에 기록된 HW를 제어하는 마이크로 프로그램의 집합이다. 프로그램이라는 점에선 소프트웨어로 볼 수 있으나, 하드웨어와 매우 밀접한 관계를 갖고 있어 보통 소프트웨어와 하드웨어의 혼종으로 본다.

1.3. booting: 운영체제가 서비스 지원을 하기 위한 준비 과정이다.

 

2. 컴퓨터와 운영체제의 발전

2.1. 0(1940년대-운영체제 x)

- ENIAC: 진공관을 이용한 최초의 컴퓨터

2.2. 1(1950년대)

- Punched Card(천공카드) System: 천공카드 리더를 입력장치, 라인 프린터를 출력장치로 사용한 컴퓨터이다. 운영체제의 개념이 도입되었다.

2.3. 2(1960년대 초반)

- Interactive system: 모니터와 키보드를 이용하여 프로그램 진행 도중 사용자로부터 입력을 받아 작업의 흐롬을 바꿀 수 있는 시스템

2.4. 3(1960년대 후반)

- Time Sharing System(시분할 시스템): 하나의 CPU로 여러 작업을 동시에 실행하는 기술이다.

2.5. 4(1970년대)

- 분산 시스템: 저렴하고 작은 컴퓨터들을 네트워크로 하나로 묶어 대형 컴퓨터의 작업을 수행하는 시스템이다.

2.6. 5(1990년대)

- client/server system: 작업을 요청하는 클라이언트와 요청받은 작업을 처리하는 서버로 나누어 처리하는 시스템이다.

2.7. 6(2000년대)~

- P2P System: 사용자 간 직접 연결을 통해 구성되는 시스템이다.

- grid computing: 필요한 기간만큼만 컴퓨터를 사용하고 사용한 만큼 금액을 지불하는 시스템

-cloud computing: 시공간에 상관없이 응용 프로그램과 데이터를 자유롭게 사용할 수 있는 시스템

-사물 인터넷(IOT: Internet Of Thing): 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술이다.

 

3. 운영체제의 종류

3.1. UNIX

C언어 기반으로 개발되어 현재까지 사용되는 운영체제

3.2. Linux

리누스 톨바즈에 의해 개발된 UNIX 기반의 오픈 소스 운영체제

3.3. MAC OS: 애플 II부터 사용된 UNIX 기반의 운영체제

3.4. Windows: MS-DOS에 멀티태스킹 및 GUI 환경을 적용한 운영체제부터 발전한 시리즈

3.5. Android: 리눅스 커널을 기본으로 한 모바일을 위해 개발된 오픈소스 운영체제

 

4. 커널과 인터페이스

4.1. kernal: 운영체제의 핵심으로, 필수 기능을 모아놓았다.

4.2. Interface: 커널에 사용자의 명령을 전달하고 그 실행 결과를 다시 사용자에 알려주는 역할을 한다.

4.2.1. GUI(Graphical User Interface): 그래픽 기반의 사용자 IF

4.2.2. CLI(Command Line Interface): 텍스트 기반의 사용자 IF

 

 

<CPU 메커니즘>

 

1. 폰 노이만 아키텍처

- cpu, memory, I/O, 저장장치가 하나의 버스로 연결되어 있는 구조
- 명령어와 데이터를 위한 메모리 인터페이스가 하나
-> 명령어를 읽을 떄 동시에 데이터를 읽거나 쓸 수 없다
- 프로그램의 데이터는 외부 저장 장치에 기록되며, 구동 시 데이터를 주 메모리로 읽어와야 한다
-> 메모리의 성능이 시스템 성능에 큰 영향
- 제어 버스: 프로세스가 장치 제어를 위해 사용하는 버스
- 어드레스 버스: 프로세스가 장치에게 제어를 위해 주소를 지정하는 버스
- 데이터 버스: 데이터 교환을 위해 프로세스와 장치 간 쌍방향 버스

2. 하버드 아키텍처

: 명령어를 위한 메모리 인터페이스와 데이털르 위한 메모리 인터페이스가 분리
-버스 시스템이 복잡하여 설계가 복잡
-스마트폰 cpu 계열에 사용

 

3. 하드웨어 용어

3.1. clock: 속도와 관련된 단위
- 클록이 일정 간격으로 틱(tick)을 만들면 거기에 맞춰 cpu 안의 모든 구성 부품이 작업을 수행
(tick = pulse = clock tick)
3.2. Hz: 클록 틱이 발생하는 속도를 나타내는 단위
1초에 클록 틱 한 번 발생 = 1Hz

3.3. system bus(FSB(Front-Side Bus)): 메모리와 주변장치를 연결하는 버스
3.4. BSB(Back-Side Bus): CPU 내부 구성 요소 간 연결하는 버스
FSB의 속도를 사용하는 메모리와 BSB의 속도로 작동하는 CPU 간의 속도 간극을 메우기 위해 cashe를 사용한다.

 


4. CPU의 구성과 동작

4.1. CPU의 구성
- ALU(Arithmetic Logic Unit - 산술논리 연산장치): 산술, 논리 연산 수행
- Control Unit: CPU 작업 지시
- Register: 데이터 임시 보관
- Bus: 구성요소 간 데이터 전달 통로


4.2. 성능 향상 기법

- buffer: 속도 차이가 있는 두 장치를 완화하는 장치
->일정 데이터를 모아 옮겨 완화한다.
- spool: cpu와 I/O장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼
(ex): 프린트 스풀러)
- cashe: 메모리와 cpu 간 속도 차이 완화를 위해 메모리의 데이터를 미리 가져와 저장하는 장소
(버퍼의 일종)
-cashe hit: 캐시에 원하는 데이터를 찾아 바로 사용
-cashe miss: 원하는 데이터가 캐시에 없을 경우 메모리로 가서 가져옴
-cashe hit ratio: 캐시 히트의 적중률
-Write Through(즉시 쓰기): 캐시 데이터 변경 시 즉시 메모리에 반영하는 방식
장점: 최신 값 유지 단점: 빈번한 데이터 전송으로 성능 저하
-Write Back(지연 쓰기): Copy Back이라고도 하며, 주기적으로 메모리에 반영한다.
장점: 성능 향상 단점: 데이터 불일치 가능성
-L(Level)2 캐시(일반 캐시): 명령어와 데이터 구분 없이 자료를 가져오는 캐시로. 메모리와 연결
-L1 캐시(특수 캐시): 명령어와 데이터를 구분하여 가져오는 캐시로, 레지스터에 연결


4.3. 폴링과 인터럽트

- polling(watchdog): cpu가 입출력장치의 상태를 주기적으로 검사하는 방식
- interrupt: 입출력 관리자가 대신 입출력을 해주는 방식으로, 데이터 입출력과 독립적인 작업 가능
인터럽트 번호: cpu에 입출력 장치 이벤트 발생을 알리기 위해 사용
인터럽트 배열: 여러 개의 인터럽트를 하나의 배열로 조합
직접 메모리 접근(DMA:Direct Memory Access): 입출력 관리자가 cpu의 허락 없이 메모리에 접근할 수 있는 권한
MMO(Memory Mapped I/O): 메모리의 일정 공간을 입출력에 할당
Cycle Stealing: CPU와 DMA가 동시에 메모리 접근 시 CPU가 양보하는 것(I/O 장치가 CPU보다 느리기 때문에)

4.4. 병렬 처리
-병렬 처리(parellel Processing): 동시에 여러 명령을 처리
-병렬 처리 시 고려사항
상호 의존성이 없어야 함
각 단계 별 처리 시간이 동일해야 함
전체 작업 시간의 단계 분화가 중요함
-파이프라인 기법: 하나의 코어에 여러 개의 Thread를 이용하는 방식
-파이프라인의 위험성*
Data Hazard: 데이터의 의존성으로 발생하며, 명령어 단계를 지연하여 해결한다.
Control Hazard: 프로그램 카운터 값을 갑자기 변화시킬 때 발생하며, 분기 예측이나 분기 지연으로 해결
Structural Hazard: 서로 다른 명령어가 같은 자원에 접근 시 발생하며, 해결이 어려움
-슈퍼스칼라 기법: 멀티코어 CPU를 사용하여 여러 개의 작업을 동시에 처리
-슈퍼파이프라인 기법: 파이프라인의 각 단계를 세분화
-슈퍼파이프라인 슈퍼스칼라 기법: 슈퍼파이프라인 기법을 여러 개의 코어에서 동시에 실행

 

 

참고자료: 운영체제 강의 - 김병국 교수님



















'컴퓨터 기초' 카테고리의 다른 글

자료의 표현  (0) 2023.03.20