개발자 면접 공부/운영체제,CS 27

프로세스 vs 스레드

오늘은 프로세스 와 스레드에 대해 공부하겠습니다. 프로그램이란? 어떤 작업을 위해 실행할 수 있는 파일을 의미합니다. 프로세스(process) 1. 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받은 작업의 단위 2. 운영체제로부터 시스템 자원을 할당 받습니다. 3. 할당 받는 시스템 자원 1) CPU 시간 2) 운영되기 위한 주소 공간 3) Code, Data, Stack, Heap의 구조로 되어있는 독립된 메모리 영역. 기본적으로 프로세스마다 최소 1개의 스레드를 갖습니다.(메인 스레드) 프로세스는 각각 별도의 메모리 영역(주소 공간)을 할당받습니다. [Code, Data, Stack, Heap] 한 프로세스는 다른 프로세스의 변수나 자료구조의 접근이 불가합니다. 접근을 하기 ..

가상메모리(페이지 교체 알고리즘)

페이지 교체 알고리즘 배경 요구 페이징 시스템은 프로세스가 특정 페이지를 요구할 때 해당 페이지를 물리 메모리에 로딩한다. 메모리에 필요한 페이지가 있을 때는 잘 진행되지만, 없을 경우에는 문제가 생긴다. 프로세스가 필요로 하는 페이지가 없는 경우(page-fault) 하드 디스크에서 페이지를 찾아 빈 프레임에 로딩하는데, 여기서 또다시 ‘페이지를 올릴 빈 프레임이 없을 경우’ 란 문제에 직면할 수 있다. 이 때 사용하는 것이 새로 올릴 페이지와 교체할 희생 프레임을 찾는 알고리즘, 페이지 교체 알고리즘이다. 아래의 페이지 교체 알고리즘 예시들은 각 프로세스에 프레임 3개를 주고, 지역성 교체를 가정한 것이다. FIFO(first in first out) 가장 간단한 알고리즘으로, 메모리에 올라온 지 가..

메모리 관리 전략, 가상메모리

메모리관리배경과 가상 메모리 가상 메모리는 한정된 크기의 메모리내에서 최대한 많은 프로세스를 할당하여 효율적으로 사용하기 위해 만든 기술로, 간단히 말하면 보조 기억장치를 주기억장치 처럼 사용할 수 있게 하는 기술입니다. 이를 통해 프로그램이 물리 메모리보다 커도 된다는 주요 장점이 있습니다. 용량보다 큰 프로그램은 실행을 할 수가 없었습니다. 또 여러 프로그램을 메모리에 동시에 올리기에는 용량의 한계와 페이지 교체등의 이슈가 발생하였습니다. 하지만 가상 메모리가 개발 되면서 물리 메모리 크기에 제약을 받지 않게되었고 더 많은 프로그램을 동시에 실행할 수 있게 되었고, swap에 필요한 I/O가 줄어들기 때문에 프로그램들이 빠르게 실행 할 수 있습니다. 가상 메모리의 장점 더 많은 프로그램을 실행할 수 ..

프로세스 상태, CPU 스케줄러

프로세스 상태 running state : 현재 cpu에서 실행 상태 ready state : cpu에서 실행 가능한 상태(실행 대기 상태) block state : 특정 이벤트 발생 대기 상태( ex : 프린팅 완료) 스케줄러란 스케줄러는 레디 큐에 존재하는 프로세스들을 특정한 우선순위 기반으로 CPU를 할당받게 해주는 역할을 함 링크드 리스트, 해쉬 리스트, 비트 맵, 레드 블랙 트리(리눅스)로 구현 스케줄링 목적 처리량 최대화 - 스케줄링 규칙은 단위 시간당 가능하면 많은 프로세스가 서비스를 받을 수 있도록 해야 함 자원 활용도 최대화 - 시스템 자원을 부지런히 사용 해야 함 무기한 연기 회피 - 프로세스들이 서비스를 받으려고 한 없이 대기하면 안됨 우선순위 강화 - 시스템이 프로세스에 우선순위를 ..

동기 비동기(프로세스 동기화)

동기(synchronous : 동시에 일어나는) - 동기는 말 그대로 동시에 일어난다는 뜻입니다. 요청과 그 결과가 동시에 일어난다는 약속인데요. 바로 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야 합니다. -> 요청과 결과가 한 자리에서 동시에 일어남 -> A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞추겠다. 동기방식의 예(A가 B에게 10,000원을 송금) 1. A의 계좌는 10,000원을 뺄 생각을 하고 있다. 2. A의 계좌가 B의 계좌에 10,000원을 송금한다. 3. B의 계좌는 10,000원을 받았다는 걸 인지하고, A의 계좌에 10,000원을 받았다고 전송한다. 4. A, B 계좌 각 각 차감과 증가가 동시에 발생하였다. 순서를 보시면 A의..

프로세스(PROCESS) , 스레드(THREAD) #2

단일 스레드 - 하나의 프로세스에서 하나의 스레드 실행 - 하나의 레지스터와 스택으로 표현 멀티 스레드 - 프로그램을 다수의 실행 단위로 나누어 실행 - 프로세스 내에서 자원을 공유하여 자원생성과 관리의 중복을 최소화 - 서버가 많은 요청을 효율적으로 수행할 수 있는 환경을 제공 - 각각의 스레드가 고유의 레지스터와 스택으로 표현됨 단일 스레드와 멀티스레드의 장단점 단일 스레드의 장점 1) 자원 접근에 대한 동기화를 신경쓰지 않아도 된다. 여러 개의 스레드가 공유된 자원을 사용할 경우 각 스레드가 원하는 결과를 얻게 하려면 공용 자원에 대한 접근이 통제되어야 하며 이 작업은 프로그래머에게 많은 노력을 요구하고 비용을 발생시킨다. 단일 스레드 모델에서는 이러한 작업이 필요하지 않다. 2) 문맥 교환(con..

프로세스(PROCESS),스레드(THEREAD)

프로세스란? 1.운영체제로 부터 자원을 할당받는 행위 2.동적인 개념으로 실행된 프로그램을 의미 쓰레드 1.프로세스내에서 실행되는 여러 흐름의 단위 2.프로세스의 특정한 수행 경로 프로세스 안에도 독자적인 구조로 나눠져있습니다. 1. Code 영역 코드 영역으로 기계어로 제어되는 메모리 영역입니다. 2. Data 영역 주로 전역변수가 저장되고, Static 변수도 저장되는 영역입니다. 3. Stack 영역 지역 변수가 저장되며 함수의 매개변수 ( 함수 호출시 전달되는 인자값) 들이 저장되는 영역입니다. 4. Heap 영역 동적할당을 위해 사용되는 공간입니다. 프로세스 제어 블록(PCB) 1. 프로세스는 생성될떄마다 PCB를 생성한다. 2.이전의 작업을 수행하고 싶으면 PCB에 저장된 내용을 가지고와 이전..