컴퓨터시스템 (10) 썸네일형 리스트형 Page Fault, Lazy Loading, Page Replacement Policy 간단하게 정리 Page Fault 페이지 폴트 페이지 - 가상 메모리를 사용하는 최소 크기 단위 각 프로세스는 페이지를 관리하는 Page Table을 가진다. 페이지 폴트는 요구 페이징 기법에서 필요한 페이지가 물리 메모리에 없을 때 발생하는 인터럽트다. 요구 페이징(Demand paging) - 모든 페이지를 물리 메모리에 올리지 않고, 필요한 페이지만 메모리에 올리는 방식 Page Fault 처리 과정 물리메모리(주기억장치)를 확인하여 페이지가 없으면 trap을 발생, 운영체제에 알린다. 운영체제는 페이지 테이블을 확인하여 가상 메모리에 페이지가 존재하는지 확인한다. 없으면 프로세스 중단. 페이지 폴트면, 현재 물리 메모리에 비어있는 프레임이 있는지 찾는다. - 페이지 폴트가 발생하면 운영체제는 해당 페이지를 저장.. Segmentation Fault Segmentation Fault란 프로그램이 동작 중 잘못된 주소를 참조할 때 발생하는 오류. 'Code Dump'라고 출력되기도 한다. 이럴 때 세그멘테이션 오류가 발생한다... 읽기 전용 메모리 영역에 데이터를 쓰려고 할 때 운영 체제 메모리 영역 또는 보호된 메모리 데이터를 쓰려고 할 때 잘못된 메모리 영역을 접근하려 할 때 (ex: NULL, 존재하지 않는 곳) 할당 받는 공간을 넘어서 접근했을 때 즉, 세그먼트 오류는 메모리 관련 오류라고 할 수 있다. 세그멘테이션 오류가 발생할 때, Linux 운영체제는 error 코드와 함께 error 메시지를 출력하는데 종류에 따라 어떤 오류가 발생했는지 알아보자. ↓ 원문 Linux에서 발생하는 KernelSegfaultErrorCode Segmenta.. 레지스터와 메모리, 그리고 캐시 레지스터(Register) 레지스터(Register)란, CPU 내부에서 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 기억장치이다. 레지스터는 연산과 프로그램의 실행을 효율적으로 수행하기 위해 사용되며, 메모리(주로 RAM)로 연산의 결과를 보내고 영구적으로 저장할 데이터를 하드디스크에 저장하는 등의 명령을 처리하기 위한 주소와 명령의 종류를 저장하는 기억 공간의 역할을 한다. 레지스터의 핵심 목적은 데이터를 빠르게 CPU로 가져오는 것이다. 레지스터의 저장공간은 작지만, CPU 외부에 위치한 메모리와 다르게 CPU와 직접 연결되어 있어 연산 속도가 메모리보다 수십~수백 배까지 빠르다. CPU는 자체적으로 데이터를 저장할 수 없어 메모리로 직접 데이터를 전송할 수가 없다. 연산을 위해서.. 프로세스와 스레드 프로그램 : 어떤 작업을 위해 실행할 수 있는 파일 아직 파일을 실행하지 않은 상태이기 때문에 정적 프로그램을 줄여 프로그램이라고 부름 프로세스 (Process) 프로세스는 컴퓨터에서 연속적으로 실행되고 있는 프로그램. 즉, 돌아가고 있는 프로그램의 상태를 말한다. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스이자 운영체제로부터 시스템 자원을 할당받는 작업의 단위다. ! 여기서 시스템 자원이란 CPU 시간, 운영을 위한 주소 공간, 독립된 메모리 영역 등이다. 특징 프로세스는 각각 독립된 메모리 영역을 할당받는다. (코드, 데이터, 스택, 힙) 기본적으로 1프로세스 1스레드(메인) 각 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 다른 프로세스의 자원에 접근하기 위해 프로세스 간의 통.. 웹서버와 CGI와 WAS (+ MIME Type) Web Server 와 Common GateWay Interface 와 Web Application Server(이하 WAS 또는 AS) 웹 서버는 하드웨어 또는 소프트웨어, 혹은 두 개가 함께 동작하는 것을 의미할 수 있다. 하드웨어 : 웹 서버의 소프트웨어와 웹 사이트의 컴포넌트 파일들을 저장하는 컴퓨터 웹 서버는 인터넷에 연결되어 웹에 연결된 다른 기기들이 웹 서버의 데이터를 주고 받을 수 있도록 한다. 소프트웨어 : 웹 사용자가 어떻게 호스트 파일에 접근하는지 관리한다. HTTP 서버는 URL과 HTTP의 소프트웨어 일부. 브라우저가 HTTP를 통해 웹 서버의 파일을 요청한다. 이 요청이 제대로 웹 서버(하드웨어)에 도달하면, HTTP서버(소프트웨어)는 요청받은 문서를 HTTP를 이용해 보내준다... 파일 디스크립터란? (File Descriptor) 파일 디스크립터란 파일 디스크립터는 리눅스, 유닉스 계열의 시스템에서 프로세스가 파일에 접근할 때 이용하는 개념입니다. 유닉스 시스템에서는 모든 것이 파일입니다. 우리가 아는 일반적인 파일부터 디렉토리, 소켓, 파이프 등 모든 객체가 파일로서 관리됩니다. 이 파일들에 접근할 때 파일 디스크립터를 이용합니다. 프로세스는 특정 파일에 접근할 때 커널로부터 사용할 정수값을 할당 받습니다. 정확히는 운영체제 커널이 프로세스에게 파일에 접근할 수 있는 인덱스를 할당해주는데 이 인덱스를 파일 디스크립터라고 하며, 파일 디스크립터 인덱스로 이루어진 테이블이 존재합니다. 프로세스가 파일을 열면 커널은 파일 디스크립터의 남아있는 숫자 중 가장 작은 값을 할당해줍니다. 이 후부터는 프로세스가 파일에 접근할 때, FD 값을.. 메모리 단편화와 메모리 할당 정책 메모리 단편화란, 프로그램이 동적으로 할당한 메모리들이 사용이 끝나 실행 도중에 해제되면서 생기는 메모리 조각들을 말합니다. 메모리 단편화는 내부 단편화/외부 단편화로 나뉩니다. 내부 단편화는 고정된 단위로 메모리 블록을 할당할 때, 블록 크기와 메모리 크기가 정확히 일치하지 않아 생기는 현상입니다. 예를 들어 8바이트의 메모리를 할당해야 하는데, 맞는 크기가 없어 16바이트의 메모리 블록을 할당 받는 경우에 8바이트는 필요하지 않아 사용되지 않고 낭비되어 내부 단편화가 발생합니다. 외부 단편화는 메모리 할당과 해제가 반복되면서 메모리 블록이 여러 개의 작은 블록으로 분산되어 공백이 생겨 메모리를 할당할 수 없는 상태입니다. 예를 들면, 남아있는 블록은 30바이트인데 이 블록이 5, 10, 15바이트로 .. GCC(GNU Compiler Collection)란? GCC는 GNU 컴파일러 모음(GNU Compiler Collection)을 줄여서 부르는 명칭이다. GNU 프로젝트는 여러 소프트웨어들이 자유롭게 돌아갈 수 있는 기반 생태계를 구축하기 위해 시작한 프로젝트다. gcc는 GNU 프로젝트의 일환으로, 1987년 GNU 프로젝트의 컴파일러를 위해 리처드 스톨만이 작성, 개발하여 현재까지 널리 쓰이고 있는 컴파일러다. 원래는 C언어만을 지원했지만, 현재는 C++, Java, Fortran 등 여러 언어를 컴파일 할 수 있게 되었다. gcc는 1997년 개발 과정을 공개, 1999년 첫 버전이 나왔다. 컴파일러란, 어떤 언어의 코드를 다른 언어로 바꿔주는 과정을 말한다. 예를 들어 사람이 작성한 C언어를 컴퓨터가 이해할 수 있는 기계어로 바꿔주는 컴파일(Com.. 이전 1 2 다음 목록 더보기