본문 바로가기

운영체제13

I/O 멀티플렉싱 - 엣지 트리거, 레벨 트리거 레벨 트리거와 엣지 트리거가 있다.레벨 트리거는 입력버퍼에 데이터가 있으면 계속 알려준다.1000 -> 500 -> 100 -> 100500이 될때도 알려주고100이 될때도 알려주고 100이 유지될때도 알려준다 반면 엣지 트리거는 입력버퍼로 데이터가 수신된 상황에서 딱 한번만 이벤트가 등록된다. 데이터가 남아있다고 추가로 이벤트가 등록되지는 않는다. select 모델은 레벨 트리거로 동작한다. 엣지 트리거는 반드시 논블로킹으로 동작해야한다.엣지 트리거의 특성상 블로킹 방식으로 동작하는 리드앤 라이트 함수의 호출을 서버를 오랜시간 멈추게 할 수 있다.왜냐하면 소켓 입력버퍼에 데이터가 없으면 계속 블로킹이 되기 때문이다.따라서 사전에 오류 확인 과정도 필요하다. 입력버퍼가 비어있는지 미리 확인해야한다. re.. 2026. 5. 5.
I/O 멀티플렉싱 - epoll SELECT는1. 애플리케이션은 요청이 들어오면 시스템 콜을 통해 OS에 소켓을 만듬 커널은 FD 반환2. 애플리케이션은 FD배열 비트맵을 가지고 있음3. select()를 통해 커널에게 이 배열을 감시해달라고 부탁4. 이벤트가 발생하고 커널은 select()의 응답을 반환5. 애플리케이션은 다시 FD배열 비트맵으로 select()를 실행 select 방식의 단점 : select를 호출할 때마다 관찰대상에 대한 정보를 매번 운영체제에게 전달해야한다. epoll은1. 상태 변화 확인을 위한 전체 파일 디스크립터 대상 반복문이 없다.2. select에 대응하는 epoll_wait 함수 호출 시, 관찰 대상의 정보를 매번 전달할 필요가 없다. select에서는 애플리케이션이 FD배열 비트맵을 만들었지만 epo.. 2026. 5. 5.
I/O 멀티플렉싱 - select 멀티플렉싱 : 하나의 통신채널을 통해 둘 이상의 데이터를 전송하는데 사용되는 기술 select로 구현하는 방법 한 곳에 여러 파일 디스크립터를 모아두고 동시에 이들을 관찰할 수 있다수신한 데이터를 지니고 있는 소켓이 존재하는가?블로킹 되지 않고 데이터의 전송이 가능한 소켓은 무엇인가?예외상황이 발생한 소켓은 무엇인가?이 각각의 관찰항목을 이벤트라고 한다. 그리고 해당 상황이 발생하면 이벤트가 발생했다고 한다. 먼저 관찰하고자하는 파일 디스크립터를 모아야한다.모을때도 세 묶음으로 모아야한다 (수신, 전송, 예외) fd_set이라고 불리는 배열이 있다 0,1로만 이루어지는 비트단위 배열이다1이면 관찰의 대상임을 뜻함 FD_ZERO 인자로 전달된 주소의 모든 비트를 0으로 초기화FD_SET 특정 주소의 변수.. 2026. 5. 5.
직접그린 논리주소 -> 물리주소 변환 그림 2026. 3. 18.
블로킹, 논블로킹, 동기, 비동기 블로킹 논블로킹 - 함수의 동작 방식블로킹 : 블로킹 함수는 결과를 즉시반환하지 않아 호출한 스레드가 결과를 받기위해 멈춤논블로킹 : 논블로킹 함수는 결과가 없음에도 -1을 즉시반환하여 호출한 스레드가 결과를 받는사이에 다른일을 할 수있음 결과를 받는 법은 주기적으로 확인하거나 I/O 멀티플렉싱 콜백등이 있음동기 비동기 - 작업 흐름동기 : 명령을 순차적으로 실행하는 것, 즉 요청자가 결과를 직접받는 것비동기 : 명령을 병렬적으로 실행하는 것, 즉 요청의 완료를 콜백으로 받는 것, 블로킹 I/O를 별도의 스레드에서 실행하는 것동기 + 블로킹 = 일반적인 디비 호출등동기 + 논블로킹 = 논블로킹 함수가 -1을 반환했음에도 지속적으로 확인하여 명령이 순차적으로 실행되는 상황비동기 + 블로킹 = 일반적으로 없.. 2026. 3. 6.
컨텍스트 스위칭 출처 쉬운코드 : https://www.youtube.com/watch?v=Xh9Nt7y07FE CPU/코어에서 실행중이던 프로세스나 스레드가 다른 프로세스나 스레드로 교체되는 것컨텍스트 스위칭은 OS커널이 실행한다. 컨텍스트란 프로세스/스레드의 상태를 말함 컨텍스트 스위칭이 필요한이유 : 여러 프로세스와 스레드를 동시에 실행시키기 위해 컨텍스트 스위칭이 발생하는 시점 : 주어진 타임 슬라이스를 다 사용했거나IO작업을 해야하거나다른 리소스를 기다려야하거나 등등의 이유 컨텍스트 스위칭의 과정커널모드로 통제권이 넘어감CPU의 레지스트 상태를 교체 프로세스끼리의 교체시 다시 원래 하던 프로세스를 실행하기위해 레지스터의 상태를 PCB에 저장 스레드끼리의 컨텍스트 스위칭은 메모리를 공유하기 때문에 메모리처리가 필.. 2026. 1. 30.
리눅스 backlog, somaxcoon TCP연결시 3핸드셰이크를 거친다.클라이언트가 Syn을 보내면 서버는 syn+ack을 보내고 아직 연결이 절반만 이루어진 이 요청을 SYN Backlog라는 큐에 보관한다.이때 요청이 보관되는 큐의 최대 크기는 tcp_max_syn_backlog이다.클라이언트가 마지막 ack을 보내 연결이 established이 된다. 이 때 요청은 Accpet Queue로 이동한다.여기서 애플리케이션이 accpet시스템 콜을 호출하여 연결을 가져가기 전까지 대기한다.somaxcoon은 커널 레벨의 최대 제한치이다. 시스템 전체에서 한 소켓이 가질 수 있는 최대 Accpet Queue를 강제한다.애플리케이션에도 backlog가있다 이것은 Synbacklog큐와 전혀다른 존재다 Accpet queue에 영향을주며 대기가능.. 2026. 1. 3.
데드락 데드락이 발생할수있는 조건 4가지 4가지 조건을 다 채워야 발생한다.1. 상호배제 (Mutual exclusion) : 자원은 한 프로세스만 사용해야한다.2. 점유대기 (Hold and wait) : 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용중인 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야한다.3. 비선점 (No preemption) : 다른 프로세스에 할당된 자원을 강제로 빼앗을 수 없다4. 순환 대기 (Circluar wait) : 한 프로세스는 다음 프로세스가 점유한 자원을 대기하고 다음 프로세스는 그 다음 프로세스가 점유한 자원을 대기하고 그 다음 프로세스는 처음 프로세스가 점유한 자원을 대기해야한다. 참고로 레이스 컨디션과 데드락은 다름레이스 컨디션은 타이밍문제데드.. 2025. 12. 15.
단편화 프로세스들이 메모리에 적재되고 제거되는 일이 반복되다 보면 어떤 가용공간은 너무 작은 조각이 된다.이처럼 곳곳에 못쓰는 작은 조각이 있지만 다 합치면 프로세스를 적재할 만한 공간이 되는 것을 외부 단편화라고 한다.최초 적합을 쓸 것인지 최적 적합을 쓸 것인지는 단편화의 크기에 영향을 받는다. 어느 알고리즘을 사용하더라도 외부 단편화는 문제다.압축은 외부단편화를 해결하는 방법이다 메모리 모든 내용을 한군데로 몰고 모든 가용공간을 다른 한군데로 몰아서 블록을 만드는 것그러나 압축은 프로세스들의 재배치가 실행 시간에 동적으로 이루어지는 경우에만 가능하다. 재배치 작업은 프로그램과 데이터를 새로운 위치로 옮기고 새 위치를 반영하기 위하여 기준 레지스터만 변경하면 된다.외부 단편화를 해결할 수 있는 다른 방법은 .. 2025. 7. 24.
페이징, 세그먼테이션 물리 메모리는 프레임이라 불리는 같은 크기 블록으로 나누어짐논리 메모리는 페이지라 불리는 같은 크기 블록으로 나누어짐 프로세스가 실행되면 프로세스의 페이지는 메인 메모리 프레임으로 적재됨논리 주소 공간은 2^64바이트 보다 적게 장착 된 시스템에서도 프로세스는 64비트의 논리 주소 공간을 사용가능하다CPU의 모든 주소는 페이지 번호와 페이지 오프셋으로 이루어진다.페이지 번호는 페이지 테이블을 액세스할 때 사용 됨페이지 테이블은 물리 메모리의 각 프레임의 시작 주소를 저장하며 오프셋은 참조되는 프레임 안에서의 위치다 두 개를 결합하여 물리 메모리 주소다 MMU의 동작순서페이지 번호를 추출하여 페이지 테이블 인덱스로 사용페이지 테이블에서 해당 프레임 번호 추출논리 주소의 페이지 번호를 프레임 번호로 바꾼다프.. 2025. 7. 24.
스와핑 프로세스가 실행되기 위해서는 프로세스의 명령어와 명령어가 접근하는 데이터가 메모리에 있어야 한다.그러나 프로세스 또는 프로세스의 일부분은 실행 중에 임시로 백업 저장장치로 내보내어 졌다가 실행을 계속하기 위해 다시 메모리로 되돌아 온다모든 프로세스의 물리 주소 공간 크기의 총합이 시스템의 실제 물리 메모리 크기보다 큰 경우에도 스와핑을 이용하면 동시에 실행하는 것이 가능하여 다중 프로그래밍의 정도를 증가시킨다. 표준 스와핑메인 메모리와 백업 저장장치 간에 전체 프로세스를 이동한다. 백업 저장장치는 일반적으로 빠른 보조저장장치다대부분의 시간을 유휴 상태로 보내는 프로세스가 스와핑에 적합한 후보다 페이징 스와핑표준 스와핑은 기존 UNIX에서 사용됐지만 프로세스 전체를 이동하는데 시간이 엄청나서 최신 운영체제.. 2025. 7. 24.
가상메모리 메모리는 컴퓨터마다 다르다 1기가일수도 2기가일수도32비트 주소체계는 42억개의 주소를 가질 수 있다. 주소1개는 1바이트이기 때문에 최대 4기가 정도임64비트 주소체계는 어마어마한 숫자다 32비트의 경우로 예를 들어보면 4기가 전체를 못쓴다 실제로는 1.7기가 정도만 씀 커널이 주소공간 일부를 점유하기 때문이기 때문프로세스는 가상 메모리를 가지고 있다. 프로세스마다의 가상 메모리의 0번은 물리메모리의 주소와 다름커널의 메모리매니저가 매핑테이블을 가지고 있다.매핑테이블은 프로세스 A의 0번주소는 물리메모리에 어디에 있다고 가르쳐주는거 (페이징이면 페이지 세그먼테이션이면 세그먼트에 있다고 갈쳐줌) 배열로 구현되어있음 가상 메모리는 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법사.. 2025. 7. 24.