일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- OS
- 카카오
- 프로그래머스
- python
- javascript
- 코테연습
- dp
- Doitvue.js입문
- CS
- 고득점Kit
- 프로그래밍
- 파이썬
- Level3
- VUE
- 웹프로그래밍
- sql
- C++
- LeetCode
- Level2
- 동적계획법
- 자바스크립트
- Level1
- 배열
- web
- 리액트
- react
- 리트코드
- Medium
- typescript
- 백준
- Today
- Total
목록OS (9)
운영체제 면접 대비 운영체제란 운영체제란 하드웨어와 응용프로그램 사이에서 인터페이스 역할을 하며 시스템의 동작을 제어하는 시스템 소프트웨어이다. 자원을 효율적으로 관리한다. (자원 관리) 추상화된 인터페이스를 통해 프로그램을 사용할 수 있도록 한다. (시스템 관리) 운영체제는 자원 관리자라고 불리며 커널 함수를 실행하면서 스위칭한다. 기능 프로세스 관리 프로세스 스케줄링 및 동기화 프로세스 생성 제거, 시작과 정지 스케줄링 IPC 통신 : 프로세스들끼리 통신하는 것 기억장치 관리 메모리 관리 가상메모리 파일시스템 네트워킹 TCP/IP 및 기타 프로토콜 지원 사용자 관리 계정관리 접근 권한 관리 디바이스 드라이버 시스템의 자원, 하드웨어를 관리한다. 프로세스와 스레드의 차이 프로세스 vs 프로그램 프로그램..
교착 상태 (Dead Lock) 교착 상태란 2개 이상의 프로세스들이 서로의 자원을 얻지 못해서 진행할 수 없는 상황을 말한다. 프로세스에게 한정된 자원이 할당되었을 때 프로세스들의 자원 부족으로 더 이상 실행할 수도 없으며, 종료 후에 다른 작업을 시작하는 것도 불가능한 상태를 말한다. block된 프로세스들은 각각의 자원을 가지고 다른 프로세스가 점유한 자원을 얻기를 기다리고 있는 상태이다. 두 프로세스는 무한정 wait 상태에 빠지게 된다. 자원은 한 번에 하나의 프로세스에 의해서만 사용될 수 있고 non preemtable resource로 선점 불가능 하기 때문에 일반적으로 데드락이 발생한다. 데드락 발생 조건 하나라도 만족하지 않으면 데드락은 해결된다. 상호 배제 Mutal exclusion ..
프로세스 동기화 멀티 쓰레드 프로그램에서 쓰레드들은 자원을 공유하며 협력한다. 이때 공유 자원 접근 시에 동기화가 보장되지 않으면 Race condition이 발생할 수 있고 부정확한 결과로 이어진다. 이를 방지하기 위한 방법을 동기화라고 한다. 동기화라는 것은 공유 자원을 어떠한 프로세스가 사용하고 있을 경우 값이 반환되기 전까지 blocking 하는 것을 말한다. 즉, Critical section에 대한 상호 배제를 제공해 race condition을 회피하는 방법이다. Race condition 쓰레드에 의해서 공유 자원에 접근한 결과가 스케줄러에 의한 접근 타이밍에 의존해 결정되는 상태이다. 결과를 예측할 수 없고 싱글 프로세스이든 멀티 프로세스이든 발생할 수 있다. 임계 구역 문제 (Criti..
스케줄러 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업이다. CPU나 자원을 효율적으로 사용하기 위한 정책으로 오버헤드를 줄이고 CPU 사용률을 높여 기아 현상을 줄이는 것을 목표로 한다. Batch System: 가능하면 많은 일을 수행. 시간보다 처리량이 중요 Interactive System: 빠른 응답 시간, 적은 대기 시간 Real-time System: 기한(dead line) 맞추기 Terminologies CPU가 Operation을 수행하는데 걸리는 시간을 CPU Burst라고 한다. CPU가 I/O를 기다리는데 걸리는 시간을 I/O Burst 라고 한다. 모든 프로세스는 CPU - I/O burst를 번갈아 가면서 실행 I/O에 의해 bloc..
스레드 프로세스의 실행 단위라고 할 수 있다. 프로세스 안에서 실행 되는 여러단위를 스레드라고 하며 기본적으로 프로세스마다 메인 스레드를 포함하여 최소 1개의 스레드를 갖는다. 스레드는 스레드 ID, 프로그램 카운터, 레지스터 집합 그리고 스택으로 구성된다. 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션 그리고 열린 파일이나 신호와 같은 운영체제 자원을 공유한다. 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상 시키는 것을 멀티 스레딩이라고 한다. 이 경우 각각의 스레드는 독립적인 작업을 수행해야하기 때문에 각자의 스택과 PC 레지스터 값을 가지고 있다. 스택을 스레드마다 할당하는 이유 스택은 함수 호출시 전달되는 인자, ..
프로세스 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말한다. 운영체제로 부터 주소공간, 파일, 메모리 등을 할당 받으며 이것을 총칭하여 프로세스라고 한다. job = task = process 프로세스는 다음을 포함한다. 스택 (stack): 함수의 매개변수, 로컬 변수와 같은 임시 자료 스택의 할당과 할당 해제는 런타임에 일어나지만 스택의 각 프레임은 컴파일 타임에 결정된다. 힙 (heap) : 프로세스 실행 중에 동적으로 할당되는 메모리 데이터 (data): 전역 변수들을 저장 코드(Code) : 코드 자체를 구성하는 메모리 영역 Execution Sequence and Stack 실행 순서를 제어하기 위해 흔히 스택을 사용한다. call st..
운영체제란 운영체제란 응용프로그램과 하드웨어 사이에서 인터페이스 역할을 하며 시스템의 동작을 제어하는 시스템 소프트웨어를 말한다. 컴퓨터의 하드웨어 바로 윗단에 설치된다. 운영체제는 컴퓨터 내의 자원을 효율적으로 관리하는 것(자원 관리)와 추상화된 인터페이스를 통해 쉽게 프로그램을 사용할 수 있도록 (시스템 관리)하는 주요 기능을 가진다. 이 때 자원은 하드웨어와 소프트웨어를 통틀어 말한다. 운영체제는 자원 관리자라고 불리며 커널 함수를 실행하면서 스위칭한다. 기능 프로세스 관리 운영체제에서 작동하는 응용프로그램을 관리하는 기능 CPU를 점유해야할 프로세스를 결정하고, 할당하며 프로세스 간 공유 자원 접근과 통신 등을 관리하게 된다. 프로세스 스케줄링 및 동기화 프로세스 생성 제거, 시작과 정지 스케줄링..
캐시 Cache 캐시 메모리는 속도가 빠른 장치와 느린 장치 간의 속도 차에 따른 병목 현상을 줄이기 위한 범용 메모리이다. 이러한 역할을 수행하기 위해서는 CPU에 어떤 데이터를 원할 것인가를 어느 정도 예측할 수 있어야한다. 캐시의 성능은 작은 용량의 캐시 메모리에 CPU가 이후에 참조할, 쓸모 있는 데이터가 얼마나 들어 있느냐에 따라 좌우된다. CPU와 주기억장치의 속도 차이로 성능 저하를 방지하기 위해 주기억 장치에 저장된 내용의 일부를 임시로 저장해둔다. CPU와 상호작용 CPU에서 주소가 전달되면 캐시 메모리에 해당 데이터가 존재하는지 확인한다. HIT (존재) : 해당 명령어를 CPU로 전송한다. Miss (비존재) : 명령어를 가지고 주기억장치에 접근하여 해당 명령어를 가진 데이터를 꺼내서..