전체 글 235

프로세스 자원 동기화 전략

👣 공유 자원 프로세스, 스레드가 함께 접근 가능한 자원. 2개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁 상태(race condition)라고 한다. 👣 임계 자원 프로세스, 스레드의 접근 순서로 결과가 달라질 수 있는 코드 영역. 이를 해결하기 위한 방법은 뮤테그, 세마포어, 모니터 3가지가 있다. 위 방법들은 모두 Lock이라는 메커니즘을 이용하고 있다. 👣 뮤텍스 특정 공유 자원을 1 개의 프로세스가 점유하고 있다면 Lock을 설정해 점유하고 있는 와중엔 다른 프로세스가 접근하지 못하도록 한다. 👣 세마포어 뮤텍스가 1개의 프로세스 점유만 허용했다면 세마포어는 n개의 프로세스 점유를 허용한다. (단, n >= 1) 구성 요소는 '정수 값', 'wait 함수', 'signal 함수'로 이뤄져..

운영체제 2023.07.23

IPC - Inter Process Communication

프로세스끼리 데이터를 주고 받는 메커니즘. 해당 방법들은 모두 스레드 사이의 공유방법보다 속도가 느리다. 1. 공유 메모리 특정 메모리 블록에 대한 접근 권한이 부여되어 통신이 가능한 것. 불필요한 데이터 복사가 생기지 않아 가장 빠르지만 동시에 수정이 이뤄질 수도 있어서 동기화가 필요하다. 2. 파일 디스크에 저장된 데이터를 기반으로 공유. 3. 익명 파이프 FIFO 방식으로 읽히는 임시 공간으로 데이터를 구조받으며 단방향 방식으로 작동한다. 부모, 자식 프로세서 사이에서만 사용 가능 4. 명명된 파이프 1 개의 서버와 n 개의 클라이언트의 통신을 위한 파이프 컴퓨터 내 프로세스 뿐만 아니라 다른 네트워크의 프로세스와도 통신 가능. 양방향 통신이 가능하지만 동시에 통신할 수는 없다. 파일 시스템으로 구..

운영체제 2023.07.23

은행원 알고리즘

알고리즘의 내용을 설명하기 앞서서 용어 정리. Max Allocate Available 의미 각 요청자가 얼마나 요구하는지 각 요청자에게 얼마나 할당했는지 제공자가 현재 얼마나 보유 중인지 아래 그림을 보면 각 대출자들은 40원, 50원, 60원을 요구하고 있고(Max) 각 대출자에게 급한대로 25원, 25원, 25원을 대출해준 상태다.(Allocate) 현재 은행은 25원만 추가로 더 줄 수 있다.(Available) 이 때, 은행이 1st, 2nd 사람에게 추가 대출을 하면 대상자는 모든 자원을 가지고 처리 후 다시 원금을 돌려준다. 때문에 이런 상태를 '안전 상태'라고 볼 수 있다. '안전 상태'란? 교착 상태에 빠지지 않는 상태. 즉, 자원을 투입하면 다시 되돌려 받을 수 있는 상태. 그리고 '불..

운영체제 2023.07.23

C언어 컴파일 과정

전처리 소스 코드의 주석 제거 및 헤더 파일 병합 전처리 된 소스 코드 파일(*.i)로 변환 컴파일 오류 처리, 코드 최적화 작업을 하고 어셈블리어(*.s)로 변환 어셈블러 어셈블리어를 목적 코드(Object Code)(*.o)로 변환. 링크 프로그램 내의 라이브러리 함수, 타 목적 코드 등과 결합해 실행 파일(*.exe, *.out) 생성. 정적 라이브러리 (*.a) 빌드 시, 직접 실행 파일에 포함되어 독립적인 실행 파일 생성. 생으로 포함되다 보니 해당 라이브러리를 사용하는 다른 실행 파일과 내용이 중복될 수 있어 파일의 크기가 증가. 실행 속도가 빠르지만 변화에 대처하기 어렵고 파일 크기가 크다. 동적 라이브러리 (*.so, *.dll) 런타임 시, 필요한 라이브러리를 로드해서 사용. 라이브러리의..

운영체제 2023.07.23

프로세스

👣 용어 정리 프로세스 컴퓨터에서 실행되고 있는 프로그램. 스레드 프로세스 내 작업. 👣 컴파일 과정 우선 C언어를 기준으로 컴파일 과정을 설명. C언어 컴파일 과정 전처리 소스 코드의 주석 제거 및 헤더 파일 병합 전처리 된 소스 코드 파일(*.i)로 변환 컴파일 오류 처리, 코드 최적화 작업을 하고 어셈블리어(*.s)로 변환 어셈블러 어셈블리어를 목적 코드(Obje ikadnorth.tistory.com 👣 프로세스 스케줄링 상태 생성 프로세스가 생성된 상태. C 언어에서 fork() 또는 exec() 함수로 생성됨. 이 때, PCB가 할당됨. 더보기 fork() 프로세스를 생성하는 시스템 콜입니다. 현재 실행 중인 프로세스와 동일한 모든 코드와 데이터를 복사하여 자식 프로세스를 생성합니다. 이때 부..

운영체제 2023.07.23

페이지 교체 알고리즘

👣 개요 스와핑 시, 어떤 페이지를 하드디스크에 올려놓을 건지 선택하는 알고리즘. 되도록 스와핑이 많이 일어나지 않게 하기 위해선 잘 사용하지 않을 페이지를 메모리에서 제거하는 것이 좋다. 👣 오프라인 알고리즘 가장 최적의 알고리즘으로서 가상의 알고리즘입니다. 앞으로 사용할 프로세스를 알 수 있다는 가정 하에 실행하는 교체 알고리즘. 다른 알고리즘과의 성능 비교를 위한 상한 기준선. 👣 FIFO 가장 먼저 온 페이지를 교체 👣 LRU 가장 참조가 오래된 페이지를 교체. FIFO와 비슷하지만 참조될 때마다 큐의 맨 앞으로 위치를 옮긴다는 점이 있다 해시 테이블과 이중 연결 리스트로 구현된다. 👣 NUR LRU의 발전된 형태. clock 알고리즘으로도 불림. 👣 LFU 참조 횟수가 가장 적은 페이지 교체.

운영체제 2023.07.22

메모리 할당 방법

👣 개요 연속 할당 고정 분할 방식 가변 분할 방식 불연속 할당 Paging Segmentation Paged Segmentation 👣 연속 할당 프로그램 전체가 연속적인 공간에 매핑. 👣 고정 분할 방식 메모리의 구역을 미리 나눠서 관리하는 방식. 내부 단편화가 발생함. 👣 가변 분할 방식 프로그램 크기에 맞춰 동적으로 메모리를 나눠서 할당. 외부 단편화가 발생함. 이름 설명 최초 적합 선형 탐색하다가 최초로 적합한 곳을 찾으면 바로 삽입. 최적 적합 완전 탐색으로 가장 단편화가 안 생기는 곳에 삽입. 최악 적합 완전 탐색으로 가장 빈 칸이 크게 나는 곳에 삽입. 👣 불연속 할당 프로그램이 조각조각 메모리의 불연속적인 공간에 저장되는 것. 페이징 메모리는 Frame이라는 고정크기로 분할되고, 프로세스..

운영체제 2023.07.22

스와핑 - Swapping

👣 스와핑 가상 메모리에는 존재했지만 실제 RAM에 존재하지 않을 때, 페이지 폴트(Page Falut)가 발생한다. 이 때, 현재 메모리에서 잘 사용하지 않는 부분을 하드디스크로 옮겨서 메모리의 공간을 창출하는 것. 다음은 스와핑의 과정이다. 1. CPU는 물리 메모리[RAM]에 원하는 페이지가 없으면 Trap[Interupt]를 발생시켜 OS에 알림. 2. OS는 CPU의 동작을 일시 정지함. 3. OS는 페이지 테이블을 확인해 가상 메모리에 존재하는지 확인함. 4. 없다면 프로세스를 중단하고 물리 메모리에 빈 프페임이 있는지 확인하기. 5. 없다면 스와핑 발동. 6. 빈 프레임을 확보하고 Page Table을 최신화. 7. CPU를 재가동함. 👣 스레싱 - Thrashing 메모리의 Page Fau..

운영체제 2023.07.22

메모리

👣 계층 👣 가상 메모리 메모리 자원을 추상화하여 사용자에게 매우 큰 메모리로 보이게 만드는 것. 메모리관리장치(MMU)에 의해 가상 주소가 실제 주소로 변환된다. 가상 주소(Logical Address) 논리적 메모리의 주소. 실제 주소(Physical Address) 실제 메모리 위치의 주소. 스와핑이란? 스와핑 - Swapping 👣 스와핑 가상 메모리에는 존재했지만 실제 RAM에 존재하지 않을 때, 페이지 폴트(Page Falut)가 발생한다. 이 때, 현재 메모리에서 잘 사용하지 않는 부분을 하드디스크로 옮겨서 메모리의 공간을 ikadnorth.tistory.com 👣 메모리 할당 방법 메모리 할당 방법 👣 개요 연속 할당 고정 분할 방식 가변 분할 방식 불연속 할당 Paging Segmenta..

운영체제 2023.07.22

웹 브라우저 저장소

👣 쿠키 만료기한이 있는 키-값 저장소. 최대 4KB까지 저장. same site 옵션을 strict로 설정하면 자동 전송 X. http only 옵션으로 JavaScript로 접근 X. 👣 로컬 스토리지 만료기한이 없는 키-값 저장소. 최대 10MB까지 저장. 웹 브라우저가 닫혀도 유지 가능. 서버에서 조작 X. 👣 세션 스토리지 만료기한이 없는 키-값 저장소. 최대 5MB까지 저장. 브라우저 탭 단위로 유지 가능. 탭을 닫으면 데이터 삭제. 서버에서 조작 X.

네트워크 2023.07.22