Fork

    [운영체제] 요구 페이징

    [운영체제] 요구 페이징

    프로그램 실행 시 프로그램의 전부를 물리 메모리에 적재하는 방법은 메모리를 효율적으로 사용하는 방법이 될 수 없다. -> 초기에는 프로그램 전체가 메모리에 있을 필요가 없기 때문이다. 메모리를 효율적으로 사용하는 방법으로 필요한 페이지만 적재하는 방법이 있다. -> 요구 페이징이라고 한다. 요구 페이징은 가상 메모리 시스템을 사용하여 필요한 프로그램의 일부만 적재함으로써 메모리를 더 효율적으로 사용할 수 있도록 한다. [요구 페이징] 1 ) 요구 페이징은 주소 공간을 페이지 단위로 나눈 뒤 필요할 때 메모리로 가져온다. -> 페이지가 필요할 때만 메모리로 가져오는 것을 Lazy swapper라고 한다. (pager가 담당) 2 ) 페이지가필요하면 페이지 테이블을 참조 -> Valid-Invalid Bit..

    [운영체제] 파이프

    [운영체제] 파이프

    [파이프] 파이프는 두 프로세스가 통신할 수 있는 통로이다. [일반 파이프] 일반 파이프는 생산자-소비자 형태로 두 프로세스 간의 통신을 허용한다. 생산자는 파이프희 한 종단(쓰기 종단)에 쓰고, 소비자는 다른 종단(읽기 종단)에서 읽는다. 결과적으로 일반 파이프는 한쪽으로만 데이터를 전송할 수 있는 단방향 통신이다. UNIX 시스템에서는 일반 파이프는 pipe(int fd[]) 함수를 사용하여 구축된다. cf ) fd[0]은 읽기 종단, fd[1]은 쓰기 종단으로 동작한다. 파이프를 생성한 후에는 read()와 write() 시스템 콜을 사용하여 접근할 수 있다. 일반 파이프는 파이프를 생성한 프로세스 이외에는 접근을 할 수 없기 때문에 통상 부모 프로세스가 파이프를 생성하고 fork()로 생성한 자식..