전체 글

Operating System

[Pintos] Project 1 Threads

드디어 대망의 핀토스다..! 프로젝트 1은 스레드에 관한 내용이다. 좀 더 정확히 짚어서 말하자면 스케줄링 알고리즘 구현이라고 볼 수 있겠다. CPU Scheduling 우리가 사용하는 컴퓨터에서는 여러 개의 프로그램들이 동시에 돌아가고 있다. 좀 더 엄밀히 말하면 동시에 돌아가는 것처럼 보이는 것이다. 사실은 한개의 프로그램만이 하나의 CPU 코어를 사용할 수 있고, 사용 주기가 굉장히 빠르게 교체되기 때문에 우리 눈에는 프로그램들이 동시에 돌아가는 것처럼 보이는 것이다. 여기까지는 우리가 컴퓨터를 보는 입장에서의 설명이었고, 프로그램의 입장에서는 CPU를 마치 자기 자신만이 소유한 것처럼 사용할 수 있게 하는 것이 CPU Scheduling의 목표이다. 현재 프로그램이 디스크에 접근하거나, 키보드의 ..

Computer Network

[Computer Network] BSD Socket

BSD 소켓이란? BSD소켓은 인터넷 소켓 또는 Unix domain 소켓에 대한 인터페이스이며, 프로세스 간의 통신(IPC)에 쓰인다. Berkeley Software Distribution에서 개발되어 BSD 소켓이라는 이름이 붙었으며, POSIX socket 이라고도 불린다. 이 인터페이스는 현재 인터넷에서 실행되는 응용 프로그램들의 표준 인터페이스이다. 흔히 소켓은 인터넷 통신 과정에서 사용하는 것으로 알려져 있다. 인터넷 통신 과정에서 소켓을 많이 활용하지만, 같은 디바이스 내에서 서로 다른 프로세스가 통신을 하는 과정에서도 소켓이 활용된다. 소켓의 연결 과정 소켓이 연결되는 과정은 위의 그림과 같다. 크게 서버와 클라이언트로 나누어서 생각해 보자 Server 1. Socket : 소켓 객체를 ..

Computer System

[Computer System] File Descriptor

File Descriptor 유닉스 시스템에서는 많은 것들을 파일로 관리한다. 정규 파일들뿐만 아니라 디렉터리, 소켓, 기타 입출력 장치들 모두 파일의 형태로 취급하는데, 이 파일들을 구분하기 위해 파일 디스크립터라는 개념을 사용한다. 우선 각각의 프로세스들이 실행될때 file descriptor table도 함께 생성된다. file descriptor table은 배열 형태로 관리가 되며, file descriptor table의 각 element는 Inode table의 특정 위치 또는 연결된 소켓을 가리킨다. 우리가 open을 통해 파일을 열거나, socket 함수를 통해 소켓을 생성하면 int 형태의 파일 디스크립터가 리턴된다. 이때 이 파일 디스크립터는 file descriptor table 상..

hin1209
codable