study/cs

컴퓨터 구조 & 운영체제

숲로 2024. 5. 8. 11:28

Chap1. 컴퓨터 구조

 

1. 컴퓨터 하드웨어 구성

 

 

1) CPU(Central Processing Unit) 중앙처리장치

메모리에 저장된 명령어를 읽어 수행하는 주체

메모리에 올라간거 CPU가 시분할순차적 처리 (* 병렬처리로 발전중)

언제 끝날지 예측 가능

<-> 인공지능-CPU와 맞지 않아

 

 

2) 메모리

 

메모리- 휘발성, 속도 빠름

* ssd- 비휘발성

 

주기억장치

- RAM

- ROM

보조기억장치

- HDD

- SDD

 

서버와 PC 차이점?

서버 내부적으로 이중화 되어있음

 

3) 입출력장치(I/O Unit)

I/O는 CPU 메모리 등 요소간에 BUS System에 의해 연결됨

Input:마우스 키보드 등

Output:모니터, 스피커, 프린터 등

4) 시스템버스

컴퓨터의 각 구성 요소 간 데이터 신호를 전달하기 위한 데이터 전달 경로

시스템 내외부 모듈 사이의 데이터 전송을 위한 통신 링크 규약

병렬, 직렬 연결 모두 가능

 

2. 폰노이만 구조

모든 프로그램은 메모리에 올라와야 실행할 수 있다

 

문제점

  • CPU처리 속도와 메모리간의 처리속도 차이 발생
  • CPU에 Cache가 등장하여 Cache에 저장된 데이터는 바로 처리
  • 문제는 HDD/SDD에 저장장치에 I/O가 일어난 다음 CPU에 처리하는 것을 생각해보면 속도 차이
  • 자주 사용하는 것을 메모리에 올려놓기 위해 RAM을 통해 처리
  • 소프트웨어 실행 시 첫번째로 저장장치로부터 CPU병목현상이 발생, 두번째 불러왔을 때 자주 사용할 것들을 RAM에 올려 처리함. CPU는 돌아가고 냉각팬도 돌아감
  • 결국 메모리를효과적으로 쓰는 프로그램 개발도 고려

병목현상

-CPU와 SSD/HDD 데이터를 읽어 메모리에 올리는 때에 폰노이만 병목현상이 발생

- 메모리 RAM에 데이터를 올려서 처리함

- RAM은 HDD나 SDD처럼 TB데이터 담을 수 없음

- 따라서 메모리를 효율적으로 관리하는 프로그램이 필요함

- Garbage Collection이라는 메모리 관리 프로그램 언어가 있음

 

인터럽트

- 폰노이만 구조에서 CPU 보조장치의 속도차이 때문에 반드시 필요

- CPU가 프린터에 출력 명령 시 인터럽트가 없으면 프린터가 완료될 때까지 기다려야 함

- 인터럽트를 사용하면 프린터가 인터럽트 신호를 보낼 때 까지 다른 일을 처리할 수 있음

- CPU는 일을 시분할로 나누어서 처리하는 구조임

 

 

CPU 와 GPU 차이

- GPU 

-CPU 순서 보장

코어- 순서 보장 하면서 

 

3. 쓰레드

하나의 프로세스에 여러 쓰레드 o

프로세스 순서를 보장을 해줘

쓰레드 멀티 쓰레드 순서를 보장

 

스레드가 CPU활용도를 높이고 성능 개선 가능하나 하나의 스레드에서 발생한 문제가 프로세스 전반에 영향을 미침

 

4. 파이프라이닝

CPU가 놀지 않고 작동시키는 기법

슈퍼스칼라: 파이프라이닝 중ㅇ첩

명령어가 상호 의존성 없이 독립적이어야 함

 

5. 메모리

 

논리주소를 두고 물리주소 매핑

 

물리주소: 메모리 하드웨어가 사용하는 주소, 실제로 저장된 하드웨어상의 주소

논리주소: cpu와 실행중인 프로그램이 사용하는 주소, 실행중인 프로그램에 가각에 부여된 0번지부터 시작되는 주소를 의미

MMU(Memory Management Unit: 메모리 관리 장치) 메모리 논리주소가 물리주소로 변환

 

6. 캐시메모리

지역성-데이터 접근이 시간적, 공간적으로 가깝게 일어나는 것

cache의 적중율을 높여야 함

적중율 높인다? Cpu가 Memory까지 가지 않고 캐쉬에서 해결한다

지역성은 기억장치내의 정보를 균일하게 접근하는 것이 아닌 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성을 보유

- 시간적 지역성

- 공간적 지역성

 

7. 하드디스크

 

8. 플래시메모리

 

9. RAID

  • RAID 0 : 분산해서 저장 - 성능 빨라
  • RAID 1 : 미러링 - 복제 - 안전

0+1 많이 씀

  • RAID 2 - 사용하지 않음..
  • RAID 3: 패리티 사용, 소프트웨어가 설치되어 있어서 문제가 생겼을 때 처리 맞춰줌
  • RAID 4: 3보다 사이즈 커
  • RAID 5: 패리티 디스크마다 분산 저장, 비용대비 효율성이 좋음

 


chap 2. 운영체제

운영체제: 응용 프로그램과 하드웨어 간의 인터페이스 역할, 소프트웨어가 하드웨어 엑세스

 

1) 커널

- 하드웨어와 소프트웨어의 중간자 역할

 

2) PCB

Process Control Block 프로세스 제어 블록

 

Context Switching

CPU가 이전의 프로세스 상태를 PCB에 보관하고 또 다른 프로세스 정보를 읽어 레지스터에 적재하는 과정

문맥교환 어쩔 수 없이 발생하지만 많이 발생하면 안좋아

실행보다 오버헤드 더 많이 발생해 성능 느려짐

- 다른 프로세스끼리의 스위칭

- 같은 프로세스의 스레드들끼리 스위칭(메모리 관련 비용처리는 안함! 같은 프로세스 내)

뒤에 있는 거 처리를 못하기 때문에 나눠서 처리하기 위해 

 

3) 프로세스 상태

 

 

멀티 프로세스와 멀티 스레드

  • 프로세스
    • code, data, stack, heap 형식으로 할당
    • 각각 독립된 메모리 영역을 할당
    • 다른 프로세스의 변수나 자료에 접근할 수 없음
    • 강제 종료되면 다른 프로세스에 아무런 영향 주지 않음
  • 스레드
    • 메모리를 서로 공유
    • 할당 받은 메모리 영역 내에서 Stack  형식으로 할당된 메모리 영역은 따로 할당하고,나머지 code, data, heap 영역은 공유
    • 한 스레드에서 오류가 발생해 종료한다면 같은 프로세스 내 다른 스레드 모두 강제 종료

4) CPU 스케줄링

 

5) 프로세스 동기화

데이터를 동기적으로 처리하기 위해서 사용하는 상호 배제 기법

다중 프로그래밍 운영체제에서 여러 프로세스가 동시에 데이터를 공유하면서 원하지 않는 결과가 발생할 수가 있음

동시에 접근할 때 위험한데이터를 임계구역으로 설정하여 해당 구역에 들어가기 전에 검사하는 과정이 필요

메모리에 올린 거 내가 처리하는 동안 건드리지 못하도록

운영체제에서 충돌이 나지 않도록 임계구역

  • 뮤텍스기법: 공유자원이 하나일 때
  • 세마포어: 공유자원이 여러 개일 때도 사용 가능

 

6) 교착상태 Deadlock

프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태로, 자원을 여러 곳에서 사용하려고 할 때 발생

 

 

7) 메모리할당

최초적합

최적적합 Best Fit

최악적합 Worst Fit

 

메모리 단편화

내부단편화

외부단편화: 총 메모리 공간을 합치면 충분하지만 공간을 할당하지 못하는 문제

 

메모리를 다 못써제일 좋은 거 cpu와 캐시에서 끝내야 하는데  메모리까지...

 

메모리 단편화 문제 해결방법 

페이징: 고정크기 / 내부단편화 발생 가능

세그먼테이션: 가변크기 / 외부단편화 발생 가능

Segmentation with Paging 실제 둘다 쓴다. 모든 메모리를 segment로 조개고 segment들을 paging

 

 

캐시를 히트한다. 못하면 메모리 못하면 가상 메모리

 

페이지 교체

프로세스가 요구한 페이지가 메모리 없으면 페이지 폴트 발생

 

페이지 교체 많이 하면 안좋아

메모리 교체하는 데 비용이 많이 들고 히트 못시키면 운영체제가 내일을 못하고 교체하는 데만 자원할당 비효율적

공간적 지역성, 시간적 지역성 -> 히트시킬 것들만 올려

 

스래싱 문제

메모리 영역에 접근할 때 페이지 부재율이 높은 것 

운영체제가 정상적으로 작동하지 x

과도한 페이징 작업을 스래싱이라고 함

 

 

해결방안

워킹셋, PFF