[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/운영체제 33

[운영체제] IPC

IPC (Inter Process Communication) Inter Process Communication의 약자로 운영체제에서 실행중인 프로세스 간에 정보를 주고받는 통신방법을 총칭하는 단어이다. 프로세스는 독립적인 실행객체이기 때문에 자신에게 할당된 메모리 내의 정보에만 접근 권한을 가진다. 하지만 커널 공간은 서로 공유하며 사용하게 된다. 따라서 커널에서는 프로세스 간 통신을 위해 다양한 방법을 제공하게되고 프로세스들은 이를 통해 서로의 정보를 공유하게 된다. IPC에도 다양한 방법들이 존재하는데 상황에 맞는 적절한 IPC 방법을 선택해야 한다. 잘못된 IPC 방법의 선택은 코딩과정을 어렵게하거나 프로그램 작동에 비효율을 초래할 수 있기 때문이다. 다양한 IPC 방법과 그 특징을 살펴보자. pi..

[운영체제] RAID

RAID (Redundant Array of Independent Disks) 디스크 배열을 사용하는 대용량 저장장치 프로세서 속도, 메인 메모리 크기, 2차 저장소 등의 크기는 급속도로 발전했지만 입출력 전송률은 그렇지 못하여 요구하는 속도를 만족시킬 수 없다는 점에서 착안했다. 여러 디스크를 동시에 접근할 수 있는 디스크 배열로 입출력 처리량, 전송률을 개선한다. RAID에서 I는 원래는 Inexpensive라는 의미였지만 이 후 많은 RAID 시스템에서 값이 비싼 고성능 디스크를 사용하게 되면서 Independent로 수정되었다. 디스크 배열은 '데이터 스트라이핑'으로 병렬성을 이뤄 성능을 개선시킬 뿐 아니라, '중복성'으로 신뢰성도 향상시켜준다. 데이터 스트라이핑, 중..

[운영체제] 디스크 스케줄링

디스크의 구성 중심에는 스핀들(spindle)이 있어 시계방향으로 돌아간다. 용량이 큰 서버용 디스크는 면이 여러개이다. 여기서 면은 플래터(platter)라고 부른다. 이러한 플래터 상에는 섹터(sector)들이 모여 하나의 원을 형성하고, 이 원을 트랙(track)이라고 한다. 트랙이 안 쪽에 있든 바깥쪽에 있든 한 트랙의 섹터 수는 동일하다. 각 플래터 상의 동일한 트랙들을 통합해 실린더(cylinder)라고 부른다. 디스크가 입출력을 하는 단위는 섹터이다. 디스크에 읽기와 쓰기를 실행하는 헤드가 목표하는 섹터를 찾아가기 위해 디스크 암은 해당 트랙을 찾아가주고, 스핀들은 디스크를 회전시킨다. 일반적으로 하드디스크의 한 섹터 크기는 512바이트이다. 헤드를 움직여 특정 트랙의 특정 섹터를 찾아가 읽..

[운영체제] 디스크 공간할당

디스크 공간할당 프로그램 파일, 데이터 파일, 디렉토리 파일 모두 파일이며, 파일은 저장장치에 블록 단위로 산재되어 저장된다. 이를 최대한 효율적으로 저장해야 파일 입출력의 속도를 높일 수 있다. 이처럼 디스크에 파일을 저장할 때 파일의 블록들의 배치를 결정하는 것이 디스크 공간할당이다. 디스크 공간할당은 연속 할당과 불연속 할당으로 나누어진다. 연속 할당 : 임의의 한 파일을 위해 디스크 내에 선형적으로 연속된 블록을 할당. 불연속 할당 : 임의의 한 파일을 위해 디스크 내에 산재된 블록을 연결해 할당, 블록이 디스크 내 어디에 있어도 액세스 가능. 불연속 할당을 구현하는 방법으로는 연결 할당, 색인 할당, 간접 색인이 있다. 간접 색인도 멀티레벨 색인과 혹합 색인으로 나누어진다. 연속 할당 연속할당 ..

[운영체제] 파일시스템

파일의 개념 파일 : 정보의 집합체. 정보란 비트, 바이트, 행, 레코드 등을 모두 포함한다. 파일 작성자나 사용자가 해당 정보를 정의한다. 파일은 보조기억장치에 저장되어 있고, 주로 프로그램파일 혹은 데이터 파일이다. 프로그램 파일 : 원시 프로그램(C,C++), 오브젝트(바이너리) 프로그램 데이터 파일 : 수를 포함해 문자 또는 ASCII 코드로 된 문자 혹은 숫자로 구성되어 있다. 내용 면에서는 텍스트 파일처럼 비정형화된 자유형식일 수도 있고, 데이터베이스처럼 엄격히 정형화된 형태일 수도 있다. 또한 동영상, 이미지, 소리 등 정해진 포멧을 따르고 있을 수도 있다. 어떤 파일이든 하드디스크와 같은 저장장치에 저장될 때 섹터 단위로 저장된다. 즉, 하나의 파일이 디스크 내 여러개의 섹터로 구성되는 것..

[운영체제] 쓰레싱 및 커널메모리

쓰레싱(Thrashing) 프레임이 충분히 할당되지 않은 프로세스는 page fault가 발생할 가능성이 높다. page fault가 발생할 때마다 페이지 교체가 필요하게 되지만, 나머지 프레임들도 이미 활발하게 사용중이므로 어떤 페이지가 교체되든 바로 다시 필요해질 것이다. 결과적으로 계속 반복하여 page fault가 발생하게 되는 악순환이 생긴다. 이렇게 과도한 페이징 작업을 쓰레싱이라고 부른다. 즉, 어떤 프로세스가 실제 실행보다 페이징에 더 많은 시간을 사용할 경우 쓰레싱이 발생했다고 한다. 이러한 쓰레싱 현상은 CPU 스케줄러에 의해 야기되기도 한다. 운영체제는 CPU의 이용률을 감시하면서 이용률이 떨어지는 것을 확인하면 이용률을 높이기 위해 새로운 프로세스를 추가해 다중 프로그래밍의 정도를 ..

[운영체제] 프레임 개수

페이지 부재율은 일반적으로 프로세스에 할당된 프레임의 개수와 역비례 관계이다. 즉, 할당된 프레임이 많을 수록 page fault rate가 줄어든다. 물론 페이지 대치 알고리즘에 따라서 일시적으로 이 역비례관계가 깨지는 '벨러디 변이'가 일어날 수는 있다. 이런 성질에 따라 각 프로세스에 적절한 프레임 개수를 할당해주어야만 할 것이다. 프레임 할당 모든 프로세스가 할당 받을 최소의 프레임 개수는 CPU 명령어의 구조에 의해 결정된다. 하나의 명령어가 참조하는 모든 페이지가 동시에 메모리에 올라와야 명령어 수행 완료가 가능하기 때문이다. 예를 들어 어떤 명령어가 간접주소를 사용한다고 하면 '명령어 페이지', '오퍼랜드 주소 페이지', '주소 내용이 가리키는 페이지' 총 3개의 페이지가 담길 프레임이 필요..

[운영체제] 대치 알고리즘

페이지 대치가 일어날 때는 앞으로 page fault가 최대한 일어나지 않도록 최선의 페이지를 대치시켜야한다. 그를 위한 다양한 알고리즘들이 존재한다. 최적알고리즘과 최악알고리즘 최적 대치 알고리즘 : 앞으로 오랫동안 사용되지 않을 페이지를 찾아서 교체하는 것이 최적일 것이다. 이러한 최적 대치 알고리즘은 벨러디알고리즘 또는 BO 알고리즘이라고 불린다. 하지만 해당 알고리즘은 오랫동안 사용되지 않을 페이지를 미리 아는 방법이 없기 때문에 사실상 실현이 어렵다. (cf. 이렇게 미래를 미리 예측하는 알고리즘은 lookahead 알고리즘이라고 불린다.) 실현은 어렵지만 해당 알고리즘이 가지는 의미는 크다. 해당 알고리즘이 있어 이에 근접한 알고리즘을 연구할 수 있고, 이를 능가하는 알고리즘은 존재할 수 없기..

[운영체제] 가상메모리 기법

한 프로그램이 수행되기 위해 정말 프로그램 '전체'가 메인메모리에 탑재되어야 할까? 프로그램 일부만 탑재되어도 수행 가능하도록 하는 방법이 있다. 이러한 생각을 바탕으로 구현된 메모리 경영기법이 가상메모리 기법이다. 가상 메모리 기법의 개요 분할방법과 페이징은 전체 프로그램을 적재해야 하지만, 가상 메모리 기법은 일부만 적재하고도 프로그램 수행이 가능하다. 사상 단위는 페이지테이블을 사용하는 페이징 기법과 똑같이 페이지이다. 프로그램의 일부만 적재되는 만큼 논리공간의 크기보다 실제 필요 물리공간의 크기가 작다. 프로그램은 적은 수의 프레임을 번갈아가면서 이용하기 때문에 '프로그램 오버레이'가 가능해지고, 메모리 활용도도 증대된다. 가상 메모리 기법의 개념 각 페이지가 메인메모리의 프레임 중 적절한 곳에 ..

[운영체제] 세그먼테이션

세그먼테이션 페이징 기법의 핵심은 메모리 공간을 동일한 크기로 나누는 것이다. (논리공간은 페이지, 물리공간은 프레임) 하지만 실제로 사용자(개발자)는 자신의 프로그램을 동일한 크기의 페이지 모음으로 인식하기보단, 함수는 함수대로, 자료구조는 자료구조대로 각각 단위 별로 메모리 상에 존재하는 것으로 인식한다. 이러한 것을 '세그먼트'라고 부른다. 세그먼트를 그대로 물리 메모리 운영에 반영해주는 기법을 '세그멘테이션'이라고 한다. 이러한 세그멘테이션은 주소 결속 방식이 페이징과 유사하지만 다르다. 페이지 테이블 대신 세그먼트 테이블을 활용해 해당 테이블에 각 세그먼트의 시작주소와 크기정보를 수록한다. 크기정보는 세그먼트가 페이지처럼 고정적인 크기가 아니라서 추가된 정보이다. 세그먼트를 활용하면 세그먼트 간..