반응형
운영체제 | |
[프로세스와 스레드] | |
//---------------------------------------------------------------//. | |
프로세스는 실행중인 프로그램. | |
스레드는 프로세스 내의 독립적으로 실행되는것을 의미한다. | |
또한 | |
프로세스는 운영체제에게 자원을 할당 받지만, 스레드는 프로세스에 의해 자원을 할당 받는다. | |
스레드는 적은 메모리를 사용하고, 전역 메모리를 공유한다는 장점이 있지만 교착상태가 발생할수 있다는 단점이 있다. | |
여기서 멀티 스레드 프로그래밍은 무엇일까? | |
하나의 프로세스에서 여러개의 스레드를 만들어 자원을 생성및 관리하고 중복을 최소화 한다. | |
//---------------------------------------------------------------//. | |
[동기 및 비동기] | |
//---------------------------------------------------------------//. | |
동기 : 요청을 보낸후 응답을 받아야만 다음 동작이 이루어진다. (블럭) | |
비동기 : 요청을 보낸후 응답과 상관없이 다음 동작을 한다. (논블럭) | |
프로세스 동기화란? 프로세스가 공유 자원을 사용하는 상황에서 공유 자원을 신뢰할수 없기 때문에(경쟁 조건) 이것을 방지하기 위해 | |
실행 순서 규칙을 정하여 공유 자원의 일관성을 보장하는 것이다. | |
//---------------------------------------------------------------//. | |
[교착상태] | |
//---------------------------------------------------------------//. | |
교착상태 : 하나이상의 프로세스가 서로 상대방의 작업이 끝나기를 기다리는 상태. | |
발생조건: 상호배제 : 한 리소스는 하나의 프로세스만 이용할수 있다. | |
비선점 : 리소스를 자발적으로 반환하기를 기다린다.(뺏지 않음) | |
원형대기 : 프로세스들이 서로를 기다린다. | |
점유와대기 : 하나의 프로세스가 리소스를 점유하고 있으면서 다른 리소스를 기다린다. | |
해결방법: 예방 : 발생조건이 만족되지 않게 한다. | |
회피 : 발생조건을 없애는 것이 아닌, 알고리즘을 이용하여 해결한다. ex)은행원 알고리즘 | |
탐지 : 원인을 규명하여 해결한다. ex)자원할당 그래프 | |
회복 : 교착상태가 발생하면 그 후에 해결하는 방법 | |
//---------------------------------------------------------------//. | |
[기아상태] | |
//---------------------------------------------------------------//. | |
기아상태 : 프로세스가 필요한 자원을 할당 받지 못하고 계속 기다리고 있는 상태이다. | |
//---------------------------------------------------------------//. | |
[경쟁상태] | |
//---------------------------------------------------------------//. | |
경쟁상태 : 여러 프로세스가 공유자원에 접근할때 공유 데이터에 대한 실행 순서에 따라 결과가 달라지는 상황이다. | |
//---------------------------------------------------------------//. | |
[임계영역] | |
//---------------------------------------------------------------//. | |
임계영역 : 둘 이상의 프로세스가 동시에 접근하면 안되는 공유 자원(임계영역)에 접근하는 영역(코드 영역) | |
즉, 프로그램에서 공유 데이터(임계 자원)를 이용하는 부분이다. | |
문제점: 동시에 접근하게 되면 예상치 못한 결과가 나오게 된다. -> 경쟁상태 | |
//---------------------------------------------------------------//. | |
[LRU] | |
//---------------------------------------------------------------//. | |
페이지 교체 알고리즘의 하나로, 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 알고리즘이다. | |
페이지 교체 알고리즘을 사용하는 이유는 페이지 부재가 생겼을때 주기억장치에 적재하기 위해 어떤 페이지 프레임을 | |
선택하여 교체할것인지를 정한다. | |
//---------------------------------------------------------------//. | |
[메모리 누수] | |
//---------------------------------------------------------------//. | |
프로그램이 필요없는 메모리를 점유하고 있는 현상이다. | |
자바의 경우는 GC가 있어 사용하지 않는 객체는 회수하여 메모리 공간을 확보한다. | |
누수를 막기위해 Local변수로 만들어 자동으로 GC가 되게 만들면 된다. | |
즉 참조값을 갖는 변수가 최소 유효범위 안에 있도록 하면 된다. | |
//---------------------------------------------------------------//. | |
[도커] | |
//---------------------------------------------------------------//. | |
도커는 컨테이너 기반의 가상화 기술이다. | |
초기에는 OS를 가상화 하였고, HOST OS위에 GUEST OS를 설치했기 때문에 무겁고 느렸다는 한계가 있었다. | |
그렇기 때문에 프로세스를 격리시킨 컨테이너를 통해 가상화를 하는 도커라는 기술이 등장하였다. | |
장점: 실행 환경 구축이 쉽고 빠르다. | |
공유 환경을 제공한다. | |
하드웨어 자원이 절감된다. | |
단점: 개발 초기의 오버헤드 (도커를 처음 쓰는 개발자일때, 초반 환경 설정시 시행착오가 많음) | |
리눅스 친화적이다. (도커를 제대로 쓰기 위해서는 linux기반os에서 사용해야 한다.) | |
//---------------------------------------------------------------//. | |
[프로그램 과 프로세스] | |
//---------------------------------------------------------------//. | |
프로세스란 현재 실행되고 있는 프로그램을 프로세스 라고한다. | |
그럼 프로그램이 프로세스인가? | |
프로그램 : 실행 파일로 파일 시스템에 존재하는 실행 파일이다. | |
프로세스 : 프로그램을 실행시켜주는 주체(인스턴스) | |
라고 세부적으로 말할수 있다. | |
대게 프로세스란 위에서 말한대로 -> 실행되고 있는 프로그램이라고 말해도 된다. | |
하나 예를 들면, | |
인터넷 창(크롬)을 3개 켰을때, 하나의 크롬(프로그램)을 실행시켜 3개(프로세스)를 만든것이다. | |
//---------------------------------------------------------------//. |
반응형
'CS지식' 카테고리의 다른 글
[보안/취약점] 최대 보안 취약 사태! Log4j 보안 취약점을 알아보자. (0) | 2022.02.01 |
---|---|
[운영체제 기초] 운영체제 용어 및 면접 예상 질문 (0) | 2022.01.23 |
[프로그래밍 언어] 프로그래밍 언어 기본 지식 및 면접 예상 질문 (0) | 2022.01.22 |
[신입 개발자 면접질문] 개발 면접 마지막으로 하고싶은말? (0) | 2022.01.21 |
[네트워크 지식] Network 기본 지식 및 면접 예상 질문 (0) | 2022.01.19 |