네트워크

#include #include pid_t fork(void); 현재 실행중인 프로세스와 동일한 기능을 하는 새로운 프로세스를 생성한다. 기존의 프로세스== 부모 프로세스 새로운 프로세스==자식 프로세스 부모 프로세스와 자식 프로세스의 차이는 다음과 같다. - 프로세스ID - 자식 프로세스 생성시 자식 프로세스의 리소스 통계는 0으로 초기화 - 시그널 설정은 상속되지 않는다. - open된 파일은 유지되지만 file lock은 자식 프로세스에서는 해제된다.
· 네트워크
Process 실행 중인 프로그램 운영체제에 의해 각 프로세스 마다 독립적인 주소공간(virtual adress)이 할당된다. 프로그램은 일련의 명령어들로 구성된 파일이다. 유닉스의 모든 프로세스는 init 프로그램을 기반으로 하여 fork() 및 exec()이 발생한다. fork() : 프로세스는 다른 프로세스(parent process)에 의해 생성된다 (예외: init 프로세스, systemd 프로세스는 다른 프로세스에 의해 생성되지 않음) exec() : 커널은 해당 프로그램을 메인메모리에 장착한다. exec()을 하게 되면 기존의 a.out 프로그램은 새롭게 부른 /bin/ls에 의해서 덮어지게 된다. ip(instr. Pointer)를 특정 프로그램의 시작 주소로 세팅하여 해당 프로세스를 시작..
· 네트워크
프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 합니다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요합니다. 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있습니다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 다음과 같습니다. 높은 주소 (high memory) 스택(stack) 영역 함수의 호출과 관계되는 지역 변수와 매개변수가 저장 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸 힙(heap) 영역 사용자가 직접 관리할 수 있는 '그리고 해야만 하는' 메모리 영역입니다. 사용자에 의해 메모리 공간이 동적으로 할당되고 해제 데이터(data) 영역 프로그램의 전역 변수와 정적(static) 변수가 저장되는..
· 네트워크
iterative server :서버 코드에서 server는 한 순간에 단 하나의 client만 처리하며, 같은 동작을 반복적으로 수행한다. iterative server를 이용하여 동시에 다수의 client를 관리하기 위한 concurrent server를 구현하는 방법에는 여러 가지가 있다. fork() 함수를 호출하여 각 client마다 child process를 만들기 fork() 함수 대신 “thread(쓰레드)”를 이용하기 pre-fork를 통해 server 시작 시 미리 children process를 생성해 두기 가장 간단한 방법은 1번이다.
가을맛
'네트워크' 카테고리의 글 목록