일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- TS
- dfs
- RTK Query
- 무한 스크롤
- SSR
- 결정 알고리즘
- React
- 인터섹션
- recoil
- useAppDispatch
- CORS
- webpack
- Jest
- 반공변성
- 투포인터
- Promise
- ESlint
- app router
- CI/CD
- 이분 검색
- 태그된 유니온
- async/await
- 호이스팅
- 공변성
- tailwind
- autosize
- 리터럴 타입
- map
- Cypress
- 타입 좁히기
- Today
- Total
목록CS/운영체제 (9)
짧은코딩
커널 커널은 운영체제의 핵심 기능을 모아놓은 것이다. 커널은 복잡하게 얽혀 있으며 단일형, 계층형, 마이크로 구조 커널로 구분된다. 커널이 하는 일 1. 프로세스 관리: 프로세스에 CPU를 배분하고 작업에 필요한 환경을 제공 2. 메모리 관리: 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공 3. 파일 시스템 관리: 데이터를 저장하고 접근할 수 있는 인터페이스 제공 4. 입출력 관리: 필요한 입력과 출력 서비스를 제공 5. 프로세스 간 통신 관리: 공동 작업을 위한 프로세스 간 통신 환경을 지원 단일형 구조 커널(monolithic architecture) 단일형 구조 커널은 초창기 OS 구조이다. 그리고 초기에는 기능 구현에 바빠서 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하..
CPU 스케줄러는 CPU 스케줄링 알고리즘으로 프로세스에게 일을 스레드 단위로 할당한다. 즉, 어떤 프로그램이 CPU 소유권을 가질 것인지 결정한다. CPU 스케줄링 알고리즘 방식으로는 크게 비선점형과 선점형 방식이 있다. -CPU 스케줄러의 목표 1. CPU 이용률을 최대치로 사용 2. 주어진 시간에 최대한 많은 일을 하도록 함 3. ready queue에 프로세스가 적도록 함 4. 응답 시간을 짧게 설정함 비선점형 방식(non-preemptive) 프로세스가 스스로 CPU 소유원을 포기할 수 있고 강제로 프로세스를 종료할 수 없다. 그렇기에 컨텍스트 스위칭으로 인한 부하가 적다. 비선점형 방식에는 FCFS, SJF, 우선순위가 있다. FCFS(First Come, First Served) 가장 먼저 ..
공유 자원(shared resource) 공유 자원은 프로세스, 스레드가 같이 접근할 수 있는 모니터, 프린터, 메모리, 파일, 데이터 같은 자원을 의미한다. 경쟁 상태(race condition)는 공유 자원을 두 개 이상의 프로세스가 동시에 읽거나 사용하는 상황을 말한다. ex) 공유 자원 item = 1이 있고 A 프로세스가 item에 2를 더하고 B 프로세스는 3을 더했다. 만약 여기서 A와 B가 같이 item을 읽고 A가 먼저 2를 더해주고 늦게 B가 3을 더하면 item은 4가된다. 옳바른 답은 6(1+2+3)이 나와야하는데 타이밍이 꼬여서 잘못된 값이 나온 것이다. 임계 영역(critical section) 임계 영역은 공유 자원에 접근하는 순서 같은 이유로 결과가 달라지는 영역을 말한다. ..
멀티 프로세싱 멀티 프로세싱은 여러 개의 프로세스를 통해 동시에 두 가지 이상의 일을 수행하는 것을 말한다. 장점으로는 병렬 처리가 가능하며 특정 프로세스의 메모리, 프로세스에 문제가 생겨도 다른 프로세스를 이용할 수 있어서 신뢰성이 높다. 웹 브라우저 웹 브라우저는 멀티 프로세스 구조를 가지고 있다. 1. 브라우저 프로세스: 주소 표시줄, 북마크 막대, 뒤로 가기, 앞으로 가기 버튼 등 + 네트워크 요청, 파일 접근 등 권한을 담당한다. 2. 렌더러 프로세스: 웹 사이트에서 보이는 모든 부분을 제어한다. 3. 플러그인 프로세스: 웹 사이트의 플러그인을 제어한다. 4. GPU 프로세스: GPU를 사용하여 화면을 그리는 부분을 제어한다. -플러그인이란? 웹 브라우저의 일부 기능들을 쉽게 설치하여 사용하게 ..
프로세스의 메모리 구조 스택, 힙, 데이터 영역(BSS segment, Data segment), 코드 영역(code segment)로 나눠진다. 그리고 스택은 위에서 부터 할당되고 힙은 아래 주소부터 할당된다. 스택(stack) 스택은 지역변수, 매개변수, 함수가 저장되고 컴파일시에 크기가 결정되는 동적인 특징을 갖는다. 스택은 함수가 함수를 재귀적으로 호출하기 때문에 동적으로 크기가 늘어난다. 이렇기에 힙과 겹치면 안돼서 스택과 힙을 반대부터 할당한다. 힙(heap) 힙도 동적으로 할당되며 런타임 시 크기가 결정된다. ex) 백터 같은 동적 배열은 힙에 할당된다. 데이터 영역 데이터 영역은 전역변수, 정적변수가 저장되고 정적인 프로그램을 종료하면 사라지는 변수가 들어 있는 영역이다. -BSS 영역 초..
프로세스 프로세스: 컴퓨터에서 실행되고 있는 프로그램, CPU 스케줄링의 대상이 되는 작업(task) 스레드: 프로세스 내 작업의 흐름 프로그램이 메모리에 올라감 -> 인스턴스화 -> OS 스케줄러에 따라 CPU가 프로세스 실행 프로세스와 컴파일 과정 프로세스: 프로그램으로부터 인스턴스화된 것 ex) exe 확장자를 가진 프로그램을 실행하면 프로세스가 된다. 또한 프로그램은 컴파일러가 컴파일하여 컴퓨터가 이해하는 기계어로 번역되는 파일이 되는 것을 의미한다. C 언어 기반의 프로그램은 컴파일을 거쳐야 하지만 파이썬 같은 인터프리터 언어는 컴파일 과정 필요 없이 한줄씩 읽어서 실행한다. -전처리 코드에서 주석을 제거하고 #include 같은 헤더 파일을 병합해 매크로를 치환한다. -컴파일러 오류 처리, 코..
가상 메모리(virtual memory) 가상 메모리는 컴퓨터가 실제로 사용 가능한 메모리 자원을 추상화해서 사용자들에게 매우 큰 메모리로 보이게 하는 메모리 관리 기법이다. -가상 주소(logical address) 가상적으로 주어진 주소이며 가상 주소는 메모리 관리 장치(MMU)에 의해 실제 주소로 변환된다. 따라서 실제 주소를 의식하지 않고 프로그램 구축이 가능하다. 가상 메모리에는 가상 주소와 실제 주소가 매핑되어 있어 프로세스 주소 정보가 들어있는 페이지 테이블로 관리된다. 속도 향상을 위해 TLB를 사용한다. TLB: 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시이다. 페이지 테이블에 있는 리스트를 보관해서 CPU가 페이지 테이블까지 가지 않고 TLB에서 찾아 속도가 향상된다. -실제 주..
CPU는 메모리에 올라와 있는 명령어를 실행할 뿐이다. 메모리 계층 메모리는 레지스터, 캐시, 메모리, 저장장치로 구성된다. -레지스터 CPU 안에 있는 작은 메모리이다. 휘발성 속도: 빠름 기억 용량: 가장 적음 -캐시 L1, L2 캐시이다. 휘발성 속도: 빠름 기억 용량: 적음 -주기억장치 RAM을 가리킨다. 휘발성 속도: 보통 기억 용량: 보통 -보조기억장치 HDD, SSD를 말한다. 비휘발성 속도: 느림 기억 용량: 많음 캐시(cache) 캐시는 데이터를 미리 복사해두는 임시 저장소이다. 그리고 장치간의 속도 차이에 따른 병목 현상을 줄일 수 있다. 실제로 메모리와 CPU 사이의 속도 차이가 너무 커서 레지스터 계층을 이용해서 속도 차이를 해결한다. => 이렇게 계층과 계층 사이에 있는 것을 캐시..
운영체제의 역할과 구조 -운영체제의 역할 1. CPU 스케줄링과 프로세스 관리: CPU 소유권을 어떤 프로세스에 줄지, 프로세스 생성과 삭제, 자원 할당 및 반환을 관리 2. 메모리 관리: 한정된 메모리를 어떤 프로세스에 얼만큼 할당 할지 관리 3. 디스크 파일 관리: 디스크 파일을 어떤 방법으로 보관할지 관리 4. I/O 디바이스 관리: I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고 받는 것을 관리 -운영체제 구조 여기서 GUI, 시스템콜, 커널, 드라이버가 운영체제이다. 리눅스 서버는 GUI가 없고 CUI만 있다. GUI: 사용자와 장치와의 상호 작용이 가능한 사용자 인터페이스 형태, 마우스로 클릭하면서 컴퓨터와 상호 작용할 수 있다. 드라이버: 하드웨어를 제어하기 위한 소프트웨어 ..