전체 글 164

[네트워크] 프로토콜 (Protocol)

프로토콜(Protocol) 이란? 개념적으로 "약속"을 뜻한다. 즉, 컴퓨터 간 데이터 송수신에 필요한 통신 규약을 의미한다. 소켓을 생성할 때도 기본적인 프로토콜을 지정해야 한다. 인터넷 주소 (Internet Address) 인터넷 상에서 컴퓨터를 구분할 목적으로 사용되는 주소를 의미한다. 4바이트 주소체계인 IPv4와 6바이트 주소체계인 IPv6이 존재한다. 인터넷 주소는 네트워크 주소(Network Address)와 호스트 주소(Host Address)로 나뉜다. 네트워크 주소를 통해 네트워크 범위를 찾고, 그 범위 안에서 호스트 주소를 이용해 호스트를 구분한다. IPv4 주소체계 예를 들어 클래스 C의 주소는 32 * 256 * 256개의 네트워크 주소를 가지고, 각 네트워크는 256개의 호스트..

[네트워크] 소켓 (Socket)

네트워크 프로그래밍 (Network Programming) 소켓 프로그래밍이라고도 한다. 네트워크로 연결된 둘 이상의 컴퓨터 사이에서의 데이터 송수신 프로그램을 작성하는 것을 의미한다. 소켓 (Socket) 네트워크의 연결 도구이며, 운영체제가 제공하는 소프트웨어적 장치이다. 소켓을 통해 운영체제는 프로그래머가 데이터 송수신에 대한 물리적, 소프트웨어적인 깊은 내용을 알 필요 없도록 한다. 소켓은 OSI 모델에서 전송 계층과 세션 계층 사이에 위치하는 것으로 볼 수 있다. 따라서 소켓 위의 계층인 세션 ~ 응용 계층을 소켓 어플리케이션 (Socket Application)이라 하고, 아래 계층인 물리 ~ 전송 계층을 네트워크 시스템이라고 한다. 두 프로세스의 소켓이 연결되면 프로세스 간 통신이 가능하다...

[물리 계층] 데이터와 신호 (Data and Signal)

아날로그와 디지털 데이터 데이터는 아날로그 또는 디지털의 형태가 될 수 있다. 아날로그 데이터는 연속적인 정보를 의미하고, 디지털 데이터는 별개의 상태들로 구분되는 정보를 의미한다. 연속적인 값을 갖는 사람의 목소리는 마이크 등의장치에 의해 비연속적인 데이터가 될 수 있다. 아날로그와 디지털 신호 각 형태의 데이터를 표현하기 위해, 신호 또한 아날로그 또는 디지털의 형태가 될 수 있다. 아날로그 신호는 무한히 많은 level을 가진 연속적인 형태를 가지고, 디지털 신호는 한정된 값 내에서만 신호 값을 가진다. Periodic and Nonperiodic 아날로그, 디지털 신호 모두 주기(Periodic) 또는 비주기(Nonperiodic)의 형태를 갖는다. 주기 신호(Periodic Signal)은 측정..

[OS/운영체제] 페이지 교체 (Page Replacement) - (3)

스레싱 (Thrashing) 충분한 프레임을 갖지 못한 프로세스는 페이지를 충족하기 위해 페이지 결함을 일으킬 것이다. 이 때, 몇 페이지를 교체해야 한다. 하지만 모든 페이지가 사용 중이었기 때문에, 교체된 페이지들은 바로 즉시 페이지 결함을 다시 발생시킬 것이다. 이런 과정이 반복되면 페이지를 교체하는 시간이 실제로 페이지가 실행되는 시간보다 길어지게 되는데, 이를 스레싱(Thrashing)이라 한다. CPU의 사용률이 낮다면, 새로운 프로세스를 생성해 멀티프로그래밍의 정도를 높여 CPU의 사용률을 높이려 할 것이다. 하지만 이것이 어느 정도를 넘으면 스레싱이 발생해 오히려 다시 사용률이 떨어져 스레싱이 발생한다. 이 경우에는 다시 멀티프로그래밍의 정도를 낮춰야 한다. Working Set Model..

운영체제 2020.11.15

[OS/운영체제] 페이지 교체 (Page Replacement) - (2)

FIFO (First-In, First-Out) Page Replacement FIFO는 가장 단순한 페이지 교체 알고리즘으로, 메모리에 옮겨진 메모리들 중 가장 오래된 페이지를 Victim으로 선택한다. 각 페이지가 메모리로 옮겨진 시간을 직접 기록하는 것이 아니라, FIFO 큐(Queue)를 생성해 메모리의 모든 페이지를 담아 놓는다. 그림에서 처음 7, 0, 1번 페이지에 대해 페이지 결함이 발생하고, 이들 페이지는 순서대로 프레임이 할당된다. 다음으로 2번 페이지의 요청에서 페이지 결함이 발생하고, FIFO 알고리즘에서는 가장 먼저 프레임을 할당받았던 7번 페이지를 Victim으로 선택해, 7번 페이지를 디스크에 기록하고 원래 7번이 할당받은 프레임을 2번 페이지에 새로 할당한다. Belady's..

운영체제 2020.11.15

[OS/운영체제] 페이지 교체 (Page Replacement) - (1)

페이지 교체 (Page Replacement) 페이지 결함률(Page Fault rate)에 대해 언급할 때, 우리는 각 페이지 결함이 최대 한 번, 그 페이지가 참조되었을 때 발생한다고 가정했지만 이는 엄격히 말해서는 정확하지 않은 표현이다. 만약 열 개의 페이지를 가진 프로세스가 실제로는 그 중 절반을 사용한다면, 요구 페이징은 사용되지 않을 5개의 페이지를 적재하는 데 필요한 입출력을 저장해야 한다. 만약 40개의 프레임이 존재한다면, 실제로는 해당 프로세스를 8개까지 실행시킬 수 있지만 4개밖에 실행시키지 못하는 것이다. 우리는 멀티프로그래밍의 정도를 높이고자 할 때, 메모리를 초과 할당(Over-Allocating)한다. 현재 페이지 10개 크기이지만 실제로는 5개의 페이지만 사용하고 있는 6개..

운영체제 2020.11.15

[OS/운영체제] 가상 메모리 (Virtual Memory) - (2)

COW (Copy-on-Write) 지금까지는 프로세스가 어떻게 요구 페이징 시스템에서 시작하는지에 대해 알아보았다. 하지만, fork()를 통해 생성되는 프로세스들은 이러한 요구 페이징 과정을 페이지 공유와 유사한 방법을 통해 건너뛸 수 있다. 이를 통해 프로세스의 빠른 생성과 생성된 프로세스에게 할당되어야 하는 새 페이지들의 수를 최소화할 수 있다. 우리는 앞에서 fork()를 통해 생성된 자식 프로세스는 부모 프로세스의 복사본이라고 했다. 일반적으로 fork()는 부모 프로세스의 주소 공간을 복사해 자식 프로세스를 생성하고, 이는 페이지에 대해서도 동일하다. 하지만 자식 프로세스가 생성된 이후 즉시 exec() 시스템 콜을 발생시키면 이러한 복사 과정은 필요 없는 과정이 된다. 대신 우리는 부모와 ..

운영체제 2020.11.14

[OS/운영체제] 가상 메모리 (Virtual Memory) - (1)

가상 메모리 (Virtual Memory) 지금까지 살펴본 메모리 관리 기법은 명령어가 반드시 물리적 메모리에서 실행되어야 한다는 필요에 의해 사용되었다. 연산이 반드시 물리적 메모리에서 실행되어야 한다는 것은 당연한 것처럼 보이지만, 물리적 메모리의 크기에 따라 한계를 가지게 된다. 프로그램은 일반적으론 발생하지 않는 오류들에 대한 코드들과 같이 프로그램을 실행하는 동안 어쩌면 절대로 실행되지 않을 부분들이 존재한다. 또한 배열, 테이블과 같은 자료구조들은 보통 실제로 필요한 양보다 더 많은 양의 메모리를 할당받는다. 이런 상황들을 보았을 때, 프로그램의 모든 부분이 항상 동시에 필요하진 않을 수 있다. 따라서, 프로그램의 일부만 실제 메모리를 할당하여 실행하는 방법은 효과적일 것이다. 프로그램은 더 ..

운영체제 2020.11.14

[OS/운영체제] 세그먼테이션 (Segmentation)

세그먼테이션 (Segmentation) 페이징 기법과 마찬가지로 메모리 관리 측면에서 가장 중요한 것은 사용자 관점에서의 메모리와 실제 메모리를 분리하는 것이다. 지금까지 봐왔듯 사용자 관점의 메모리는 실제 메모리와 같지 않고, 매핑(mapped)된다. 이러한 매핑을 통해 논리적 메모리와 물리적 메모리를 구분할 수 있다. Basic Method 대부분의 사용자는 메모리를 바이트의 연속적인 배열로 생각하지 않는다. 대신 메모리를 순서가 없는 가변 크기의 Segment(부분)의 모음으로 보게 된다. 마찬가지로 우리는 프로그램을 메소드, 함수, 자료구조 등의 집합으로 생각하게 된다. 프로그램이 어떤 메모리 주소에 담기는지는 신경쓰지 않는다. 세그먼테이션(Segmentation)은 이러한 사용자 관점의 메모리를..

운영체제 2020.11.13