[OS] 캐시 메모리

캐시 메모리는 작고 빠른 메모리로 CPU의 메모리 프로세싱 병목 현상을 줄이도록 도와주는 역할을 한다. CPU -> L1$(I & D) -> L2$ -> Main memory 위의 구조 순으로 접근하며, CPU와 가까울수록 접근 속도가 빠르다. 지역성 캐시는 시간 지역성(Temporal Locality)과 공간 지역성(Spatial Locality)라는 것을 활용한다. 시간 지역성 : 최근 접근한 데이터에 다시 접근할 가능성이 높다. 공간 지역성 : 접근한 데이터에 가까운 주소에 접근할 가능성이 높다. 위와 같은 코드가 있다라고 했을 때, 변수 sum은 루프가 실행되는 동안 계속해서 호출된다. (시간지역성) 배열 x와 y는 0번째 인덱스를 접근한 후에 다른 요소들까지 접근한다. (공간지역성) 자세한 것은 시간이 될 때 적도록 하겠다. Fetch Flow CPU가 메모리에 접근하면

2022년 7월 31일
·
0개의 댓글
·

[OS] 프로세스 생성 - fork(), exec()

프로세스 생성 유닉스 환경에서 프로세스를 생성시키는 명령어는 fork()와 exec() 가 있다. 두 명령어 모두 한 프로세스가 다른 프로세스를 실행시키기 위해 사용하게 된다. fork()는 새로운 프로세스를 위한 메모리를 할당한다. 그리고 fork()를 호출한 프로세스의 PCB 정보을 새로운 공간으로 전부 복사하게 되고, 원래 프로세스는 기존 작업을 계속 실행하게 된다. fork()로 생성된 프로세스 또한 fork() 시스템 콜이 수행된 라인의 다음 라인부터 실행된다. (새로 생성된 프로세스는 원래의 프로세스와 똑같은 코드를 가지게 된다.) exec()는 fork()처럼 새로운 프로세스를 위한 메모리를 할당하지 않고, exec()를 호출한 프로세스가 아닌 exec()에 의해 호출된 프로세스만 메모리에 남게된다. > fork() => 프로세스를 하나 더 생성시킴 (PID가 다른 또 하나의 프로세스를 생성) > `ex

2022년 3월 22일
·
0개의 댓글
·