개발👩💻 (72) 썸네일형 리스트형 프로세스 다루기 1(10-4) fork와 exec를 함께 사용하기 일반적으로 exec이 홀로 쓰이는 경우는 매우 드물다. 보통 fork와 함께 쓰인다. 프로세스가 있는데 그 프로세스가 포크를 불러서 자식프로세스를 만든다 자식 프로세스는 부모 프로세스와 똑같은 프로세스 생성, exec 불러서 다른 프로그램으로 바뀐다. 이런식으로 부모, 자식 프로세스가 전혀 다른 프로그램을 실행하도록 하는 유닉스 내의 방법 int main() { pid_t pid; printf("hello!\n"); if ((pid = fork()) > 0) { /* parent process */ printf("parent\n"); sleep(1); } else if (pid == 0) { /* child process */ printf("child\n"); exec.. 프로세스 다루기 1(10-3) int execl(cont char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execv(cont char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); exec 계열의 시스템 콜에 대해 알아보자 사용 목적은 현재 프로세스의 코드부분을 다른 실행파일로 교체하기위함이다. 각각의 시스템콜들의 대한 사용방법을 설명하기 전에 exec이 무엇인지 보자 하드디스크에 있는 프로그램이 메인메모리에 적재되어 실행되고 있다. 프로세스에 관련된 속성 정보들이 프로세스 테이블에 기록되어 있다. 회색프로그램을 연두색 프로그램으.. 프로세스 다루기 1(10-2-2) int main() { int fd, n; char line[512]; fd = open("data.txt", O_RDONLY); n = read(fd, line, 17); line[n] = '\0'; fprintf(stderr, "before fork: %s", line); if (fork() > 0) { /* parent process */ sleep(3); n = read(fd, line, 17); line[n] = '\0'; fprintf(stderr, "parent process: %s", line); } else { /* child process */ n = read(fd, line, 17); line[n] = '\0'; fprintf(stderr, "child process: %s", lin.. 프로세스 다루기 1(10-2-1) 프로세스와 관련된 여러가지 시스템 콜들에 대해서 설명한다. fork: 이 fork 시스템 콜을 호출한 프로세스와 동일한 자식 프로세스를 생성한다. exec: 6가지 종류가 있고, 프로세스 코드 부분을 다른 프로그램을 교체할 때 사용된다. exit, _exit: exit은 프로세스를 종료하고 종료 상태를 부모 프로세스에게 전달하는 목적, _exit은 exit과 거의 같지만, atexit함수를 통해서 등록된 함수들을 호출하지 않고 그냥 프로세스를 종료한다는 차이점이 있다. atexit: exit에의해 종료될 때 호출될 함수를 등록할 때 fork 인자없이 fork()만 호출하면 된다. 함수로부터 리턴하는 것은 한번이 아닌 두번이다. 어떤 프로세스가 있는데 이 fork를 부르면 자신과 똑같은 자식프로세스를 만든.. 리눅스 프로세스 관리(10-1) 프로세스라고 하는 것은 실행중 상태에 있는 프로그램을 말한다. c로 프로그램을 짰다고 하면 컴파일 해서 기계어로 된 실행 파일을 만들었다. 파일 형태로 디스트에 저장된다. 그 프로그램을 실행시켜 실행중인 상태에 있는 것을 프로세스라고 한다. 하나의 프로그램을 동시에 여러번 실행히킬 수 있는데, 두개의 프로세스로써 따로따로 실행될 수 있다. 이런 프로세슬르 실행하는 방법이 있다. 유닉스에서 명령을 내려서 실행시키면, 로그인을 했을 때 쉘프로세스가 실행이된다. 쉘프로세스가 프롬프트를찍어서 명령어를 입력하게 하고 입력하면 명령어를 실행시키기 위해 새로운 프로세스, 자식 프로세를 하나 만든다. 그래서 자식 프로세스에게 프로그램을 실행하게 만든다. 프로그램이 실행되는 동안에는 프롬프트가 생기지 않는다. 실행을 마.. 14-3:Network Layer:Link Layer LAN - Addressing, ARP - Ethernet - switches LAN: Local Area Network MAC address 링크 계층에서 사용하고 있는 맥어드레스 네트워크 계층에서 사용하고 있는 ip 주소를 통해서 인터페이스에 대한 네트워크 계층 주소를 할당했었다. 네트워크 계층에서 포워딩을 할때 사용했다. 이것과 비교했을 때 mac주소는 프레임을 링크계층에서 하나의 인터페이스에서 물리적으로 연결된 다른 인터페이스로 전달할 때 사용한다. 같은 서버넷 안에서 IP 주솔 활용하는 것처럼 맥어드레스를 활용해서 같은 서브넷 안에서는 메시지를 서로 교환을 할 수 있다. 이때 사용하는 것이 맥 어드레스이고, 48비트짜리 맥어드레스를 사용한다. NIC카드 포트에 각각 인터페이스에 맥어드레스가 애초.. 14-2:Network Layer:Link Layer Multiple access protocols 엑세스를 할 때 어떻게 처리를 할지도 링크계층에서 제공하는 중요한서비스이다 이럴 때 multiple access protocol을 이용한다. 링크는 두가지종류로 나눌 수 있다. - point to point pc와 pc가 있으면 직접 랜선으로 연결이 되어 있을 경우를 이야기한다. 직접 연결된 그런 부분들은 point to point 링크 방식을 사용한다. 일반적인 경우에는 - broadcast 브로드 캐스트 방법을 사용한다. 공유하고 있는 매체를 이용해서 공유해서사용할 때 브로드캐스트 링크를 사용한다. 이더넷과 와이어리스, 위성, 4g 5g모두 브로드캐스트 링크를 사용한다. 이번에 다룰 내용은 브로드캐스트에서 공유를 하고 있는데 어떻게 동시에 여러명이 사용하.. 14-1:Network Layer:Link Layer Link layer, LAN 링크계층에서 동작하는서비스들에 대해 알아본다. 여기서 제공해주는 서비스들에는 에러를 검출하고 정정해주는 것이 있다. 링크계층에는 2가지 종류가 있다. Point to Point- 포인트 채널, 브로드 캐스트 체널이 있다. 브로드캐스트채널을 하나의 채널을 공유를하는데 이때 어떻게 동시접속을 관리할 것인지 이런 것도 링크계층에서 제공하는서비스이고, 링크 계층에서는 주소를 어떻게 찾아가는지 이더넷과 몇가지 관련된 프로토콜에 대해서도 알아본다. Introduction 링크 계층이 하는 역할은 하나의 노드에서 바로 인접해 있는 다른 노드로 데이터그램을 전송하는 역할을 한다. 빨간색 선들이 다 링크를 나타내고, 링크는 결국에 이렇게 인접해 있는 것들 사이에 데이터그램전송을 책임지는 역할.. 이전 1 2 3 4 5 6 7 ··· 9 다음 목록 더보기