본문 바로가기

legacy/Operating System

(21)
[운영체제] 프로세스 주소 공간과 TLS(Thread Local Storage) 1. 프로세스 주소 공간스택(Stack) 영역컴파일 시점에 크기가 결정된다.함수의 호출과 관계있는 지역 변수와 매개 변수 그리고 함수의 실행을 마치고 복귀할 주소가 저장되는 영역이다.스택 영역은 함수의 호출과 함께 생성되고 종료와 함께 소멸된다.메모리의 높은 주소에서 낮은 주소 방향으로 할당된다.재귀가 너무 깊게 호출되면 StackOverFlow 예외가 발생하는데, 이는 제한된 스택 영역을 초과하였기 때문에 발생한다.프로그램 실행 중에 변경될 수 있으므로 Read-Write로 설정되어 있다.힙(Heap) 영역런타임 시점에 결정되는 영역이다.사용자에 의해 동적으로 할당되고 명시적으로 해제해야 한다.malloc(), new(), free()주로 참조형 데이터가 할당된다.프로그램 실행 중에 변경될 수 있으므로..
[운영체제] 외부 단편화와 내부 단편화 1. 외부 단편화란?외부 단편화란 남아 있는 총 메모리 공간이 요청 메모리 공간보다 크지만, 남아 있는 메모리 공간이 연속적으로 위치하지 않아 요청한 메모리를 적재할 수 없는 현상이다. 아래 예시를 보자.남아 있는 총 메모리 공간 : 100MB (50 + 50)요청 메모리 크기 : 80MB총 메모리 공간만 보았을 때 충분히 요청 메모리를 적재할 수 있으나, 남아있는 두 메모리가 연속적으로 위치하지 않아 적재할 수 없다. 1-1. 외부 단편화가 발생하는 이유총 메모리 공간은 충분함에도 남아 있는 메모리들이 연속적으로 위치하지 않기 때문이다.  2. 외부 단편화 해결하기외부 단편화가 발생한 이유는 남아있는 메모리가 연속적으로 위치하지 않았기 때문이다. 그렇다면 남아 있는 메모리를 연속적으로 위치할 수 있도록..
[운영체제] 페이지 매핑 테이블 심화 페이지 매핑 테이블의 주소 매핑각 프레임(또는 페이지)은 여러 주소를 포함하고 있다.예를 들어, 2번 프레임의 경우 시작주소가 22번지이고 23, 24, 25 ... 여러 주소를 포함하고 있다. 페이징을 사용하는 시스템에서는 형식으로 논리 주소에 접근한다.페이지 번호: 접근하고자 하는 페이지 번호변위: 페이지가 적재된 프레임의 시작 번지로부터 떨어진 주소페이지 매핑 테이블을 통해 에서 로 변경된다. Ex) CPU는 2번 페이지가 적재된 5번 프레임의 시작 번지 67에서 2만큼 떨어진 69번지에 접근한다. 페이징 매핑 테이블이 갖는 4가지 비트유효 비트페이지가 메모리에 적재되어 있는지 구분하는 비트프로세스 단위가 아닌, 페이지 단위로도 스와핑이 가능하다. 단, 불연속적인 메모리 할당 기법에서만 적용된다...
[운영체제] 연속 메모리 할당 방법과 단편화 연속 메모리 할당연속 메모리 할당이란 메모리 영역 중에서 요구하는 메모리 크기만큼 연속적인 공간을 찾아 할당하는 방식이다.즉, 프로세스를 연속적인 공간에 할당하는 방식을 의미한다. 스와핑 설명에 앞서, 스와핑이 무엇인지 먼저 알아야 한다. 프로그램을 실행하기 위해서는 보조기억장치에 있는 프로세스가 메모리에 적재되어야 한다. CPU는 메모리에 적재된 프로세스를 사용한다. 메모리에 적재된 프로세스 중에 현재 사용되지 않는 프로세스 또는 IO작업으로 인해 대기 상태인 프로세스가 있을 수 있다. 오랫동안 사용되지 않는다면 굳이 메모리에 상주할 필요가 없다. 메모리의 크기는 한정적이기 때문에 효율적으로 사용해야 한다.이때, 사용되지 않는 프로세스를 메모리에서 보조기억장치로 보내는 것을 스왑아웃(swap-out)이..
[운영체제] 캐시 메모리 (Cache Memory) 1. 캐시 메모리(Cache Memory)캐시 메모리는 CPU와 주 기억장치(메인 메모리, RAM) 사이의 고속 데이터 저장소로 사용된다. 데이터에 빠르게 접근할 수 있도록하여 시스템의 전반적인 성능을 향상시킨다. 캐시 메모리는 CPU가 주 기억장치에 접근하는 것보다 빠른 속도로 데이터에 접근할 수 있도록 해준다. CPU는 먼저 캐시에서 데이터를 찾고 데이터가 없는경우 주 기억장치에서 데이터를 가져온다. 자주 사용되는 데이터나 명령어를 캐시 메모리에 저장하면 CPU는 캐시 메모리에 저장된 정보를 재사용할 수 있다. 이는 반복적인 메모리 접근을 줄인다.  2. 캐시의 지역성(Cache Locality)CPU는 데이터를 가져오기 위해 캐시 메모리에 먼저 접근하고 데이터가 존재하지 않는다면 주 기억장치에 접근..
[운영체제] Context Swtiching Context Switching이란?멀티 프로세스 또는 멀티 스레드 환경에서 여러 프로세스 또는 스레드가 CPU를 공유하기 때문에 컨텍스트 스위칭이 발생한다.진행 중이던 작업에서 다른 작업을 수행해야할 때, 현재 프로세스 또는 스레드는 지금까지 진행한 작업의 상태를 저장한다. 그리고 컨텍스트 스위칭을 통해 다른 작업을 수행하는 프로세스의 이전 작업 내용을 복원한다. Context란?Conext란 CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보들이다.각 프로세스는 독립된 메모리 공간에 PCB(Process Control Block)을 저장하며, 프로세스의 정보인 Context가 저장된다.PCB는 다음 정보를 저장한다.프로세스 상태: 생성, 준비, 수행, 대기, 중지PC(프로그램 카운터): 프로..
[운영체제] 뮤텍스 락과 세마포어 새로운 게시물이 작성되었습니다 => https://server-technology.tistory.com/479현재 글과 새로운 게시물 둘 다 읽어보시면 도움이 될 것이라 생각합니다. 뮤텍스락: 공유 자원 1개에 대하여 오직 하나의 스레드만이 접근할 수 있도록 하는 상호 배제(Mutual Exclusion) 기법이다. 세마포어: 공유 자원 n개에 대하여 여러 스레드가 동시에 접근할 수 있도록 n개의 자원을 제어한다. 뮤렉스락(Mutex Lock)1개의 공유 자원에 1개의 스레드 또는 프로세스만 접근할 수 있도록 제어한다. 이를 상호 배제(Mutual Exclusion)라고 한다. 공유 자원을 사용하고 있는 스레드(또는 프로세스)는 Key를 가지고 있다. Key를 가지고 있는 스레드는 공유 자원을 사용하고 ..
[운영체제] Thread Safe 멀티 스레딩 환경에서 데이터의 일관성과 정확성을 보장하기 위한 개념이다. 여러 스레드가 동시에 같은 데이터에 접근할 때 발생할 수 있는 문제를 방지하기 위한 다양한 기법이 존재한다.Thread Safe멀티 스레드 프로그래밍 환경에서 함수나 변수, 객체에 여러 스레드가 동시에 접근이 발생해도 프로그램에 문제가 발생하지 않는 것을 의미한다.즉, 하나의 스레드로부터 실행 중인 함수가 있을 때, 다른 스레드가 해당 함수를 사용하더라도 각 스레드에서 호출한 함수의 결과가 올바르게 출력되는 것을 의미한다. Thread Safe를 위한 4가지 방법Mutual Exclustion (상호 배제)Atomic Operation (원자 연산)Thread-Local Stroage (스레드 지역 저장소)Re-Entrancy (재..