운영체제(OS) / 컴퓨터구조

반응형

부팅방식 : 메인보드의 ROM에 위치한 부트로더(부트스트랩)가 시스템을 초기화 한 뒤 보조기억장치(HDD, SSD)에서 부트블록을 RAM에 적재한다. 부트블록은 실행된 후 보조기억장치에 있는 운영체제를 적재한다.

 

프로세스 : 물리메모리(RAM)에서 운영체제로 부터 자원을 할당받아 실행중인 프로그램.

  스택(로컬), 힙(동적할당), 데이터(전역), 코드영역으로 구성.

  I/O bound  vs  CPU bound 

  fork() : 부모는 자식의 pid return. 자식은 0 return

  exec() : 부모로부터 받은거 버리고 자기꺼 실행

  고아프로세스 : 부모가 자식 생성후 먼저 종료된 경우. init()프로세스가 주기적으로 고아를 수거한 뒤  wait() 실행

  좀비프로세스 : 자식은 할일 다 끝마쳤는데 부모가 wait() 안하는 경우.

  

  new -> ready (interrupt)<->(dispatch) running -> exit

                                    waiting(I/O 등)

쓰레드 : 프로세스 내 작업 실행 단위. 프로세스의 스택을 제외한 영역을 공유. 문맥전환 시 속도 빠름 + 생성 시 속도 빠름. 쓰레드가 프로세스보다 빠른 이유.

비동기 쓰레드 : 부모쓰레드와 자식쓰레드 따로 놀음

동기 쓰레드 : 부모쓰레드가 자식쓰레드가 끝날 때 까지 기다림(1부터 100억까지 더하는 로직. 나눠서 계산한 후 합산)

유저레벨 쓰레드(API 이용해 유저가 사용. 문맥전환x, 오류시 다 꺼짐) vs 커널레벨 쓰레드 (커널에서 동작, 문맥전환 잦음)

 

CPU 스케줄링 : FCFS, SJF, SRTF, Priority, RoundRobin(time qunatum으로 돌아가면서)

  우선순위, 선점 스케줄링에서 starvation 발생 시 aging으로 해결

 

임계영역. lock으로 보호. (mutex, semaphore, monitor)

교착상태(Deadlock) 발생 네가지 조건 : Mutual Exclusion, No Preemption, Hold & Wait, Circular Wait

데드락, 예방 or 회피 or 탐지 후 복구 가능.(탐지 시 주기적인 간격 or CPU이용률 낮을 때만)

 

페이지 테이블. PCB에 존재하므로 프로세스 마다 존재. 페이지 관리하며 디스크 접근하는 시간 절약.

페이지 테이블에서 페이지 위치 확인하고(한 번) 그 위치 정보를 이용해 메인 메모리 내의 프레임에 접근( 두 번). cpu에서 총 두 번 왔다갔다하므로 시간 낭비. 그래서 MMU 근처에 TLB 캐시를 만들어 시간 절약.

 

 

Fragmentation : 내부 단편화(자리 남음) / 외부 단편화(못들어감)

Page(일정한 크기로) / Segmentation(논리 단위로)

--> 페이지 테이블, TLB 이용.

 

Cache : Spatial Locality, Temporal Locality

 

32bit vs 64bit 컴퓨터의 차이 : 레지스터가 표현가능한 주소 크기. (2^32 = 4GB)

64비트는 2엑사바이트라 현재는 하위 48비트만 사용한다고 한다.

컴구에서는 32비트 기준으로 1워드에 4바이트라 배웠는데

64비트에서는 1워드에 8바이트인 셈. 이중 6바이트만 사용.--> 더 다양한 명령어들을 사용할 수 있다?

 

파이프라이닝 : 처리량(Throughput)을 향상시키지만 명령어 별 지연시간(latency)는 저하될 수 있음. 균일한 간격으로 맞춰주어야 하므로.

슈퍼스칼라 : 동시에 두 개 혹은 그 이상의 명령어를 처리.

제어 해저드 / 구조적 해저드 / 또 한가지?

 

LRU 캐시에서 값이 변경되었을 시 바로 디스크에 write back 하면 지연 시간이 늘어남. 이를 해결하기 위해 버퍼를 따로 두기도 하고 아니면 dirty임을 체크해 둔 다음에 evict될 때 디스크에 쓰는 방법을 사용한다.

 

반응형

'DevOps' 카테고리의 다른 글

기타  (0) 2020.11.21
데이터베이스  (0) 2020.11.20
컴퓨터 네트워크  (0) 2020.11.20
자료구조, 알고리즘  (0) 2020.11.20
Java  (0) 2020.11.20