목록운영체제OS (8)
개발일지

OS 의 대표적인 할 일 중 하나가 메모리 관리다. 컴퓨터 내의 한정된 메모리를 극한으로 활용해야 하는 것이다. Virtual Memory 가상메모리 : 가상메모리는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용가능한 메모리 자원을 추상화해 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다. 가상적으로 주어진 주소를 가상주소 logical address 라고 하고 실제 메모리상에 있는 주소를 실제 주소 physical address 라고 한다. 가상 주소는 메모리관리장치 MMU 에 의해 실제 주소로 변환되며, 이 덕분에 사용자는 실제 주소를 의식할 필요 없이 프로그램을 구축할 수 있게 된다. 가상 메모리는 가상 주소와 실제 주소가 매핑되어 있고 프로세스의 주소 정보가 들어있는 '페..

CPU 스케줄러는 CPU 스케줄링 알고리즘에 따라 프로세스에서 해야하는 일을 스레드 단위로 CPU에 할당한다. 프로그램이 실행될 때는 CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU 소유권을 줄 것인지 결정한다. 이 알고리즘은 CPU 이용률을 높게, 주어진 시간에 많은 일을 하게, 준비 큐에 있는 프로세스는 적게, 응답 시간은 짧게 설정하는 것을 목표로 한다!! CPU 스케줄링 알고리즘은 두 가지로 나뉜다. 선점형, 비선점형!! 비선점형 non-preemptive : 프로세스가 스스로 CPU 소유권을 포기하는 방식이며 강제로 프로세스를 중지하지 않는다. 어떤 프로세스가 실행되는 동안 그 누구도 끼어들 수 없다는 말임.. 그래서 컨텍스트 스위칭으로 인한 부하가 적다. 그렇다면 비선점형에 해당하는 대표적인..

PCB 는 운영체제에서 프로스세에 대한 메타데이터를 저장한 "데이터"를 말한다. 번역하면 프로세스 제어 블록. 프로세스가 생성될 때 운영체제는 PCB를 생성한다. 프로그램이 실행되면 프로세스가 생성되고 프로세스 주소 값들에 스택, 힙 등의 구조를 기반으로 메모리가 할당된다. 프로세스 메모리 할당 구조는 아래 따로 정리해놓았으니 참고하세용 https://kang96.tistory.com/83 프로세스의 메모리 구조 운영체제는 프로세스에 적절한 메모리를 할당하는데 다음 구조를 기반으로 할당한다. 스택 Stack 은 지역변수, 매개변수, 함수가 저장되고 컴파일 시에 크기가 결정되며 "동적"인 특징을 갖는다. kang96.tistory.com 만들어진 프로세스의 메타데이터*들이 PCB 에 저장되어 관리된다. 이..

운영체제는 프로세스에 적절한 메모리를 할당하는데 다음 구조를 기반으로 할당한다. 스택 Stack 은 지역변수, 매개변수, 함수가 저장되고 컴파일 시에 크기가 결정되며 "동적"인 특징을 갖는다. 스택영역은 함수가 함수를 재귀적으로 호출하면서 동적으로 크기가 늘어날 수 있는데 이때 힙과 스택의 메모리 영역이 겹치면 안되기 때문에 힙과 스택의 공간을 비워놓는 것이다!!! 힙 Heap 은 동적 할당할 때 사용되며 런타임 시 크기가 결정된다. 벡터같은 동적 배열은 당연히 힙에 동적 할당된다. 데이터 Data 영역은 전역변수, 정적변수(static으로 선언한)가 저장되고 정적인 특징을 갖는 프로그램이 종료되면 사라지는 변수가 들어있는 영역이다. 데이터 영역은 BSS 영역과 Data 영역으로 나뉘고 BSS 영역은 초..

생성상태 create : 프로세스가 생성된 상태 fork(), exec() 함수를 통해 생성한다. 이때 PCB가 할당됨. - fork() : 부모 프로세스의 주소 공간을 그대로 복사해 새로운 자식 프로세스를 생성하는 함수다. 주소 공간만 복사할 뿐이지 부모 프로세스의 비동기 작업 등은 상속하지 않아@ - exec() : 새롭게 프로세스를 생성하는 함수. 대기상태 ready : 메모리 공간이 충분하면 메모리를 할당받고 아니면 아닌 상태로 대기하고 있으며 CPU 스케줄러로부터 CPU 소유권이 넘어오기를 기다리는 상태다. 실행 상태 running : CPU 소유권과 메모리를 할당받고 인스트럭션을 수행 중인 상태를 의미한다. 중단 상태 blocked : 어떤 이벤트가 발생한 이후 기다리며 프로세스가 차단된 상태..

캐시 cache : 캐시는 데이터를 미리 복사해놓은 임시 저장소이자 빠른 장치와 느린 장치의 속도 차이에 따른 병목현상을 줄이기 위한 메모리를 말한다. 이릍 통해 데이터를 접근하는 시간이 오래 걸리는 경우를 해결하고 무언가를 다시 계산하는 시간을 절약할 수 있다.!! 실제로 메모리와 CPU 사이의 속도가 차이가 너무 크기 때문에 그 중간에 레지스터 계층을 둬서 속도 차이를 해결한다. 이렇게 속도 차이를 해결하기 위해 계층과 계층 사이에 있는 계층을 캐싱켸층이라고 함!! ex) 캐시 메모리와 보조기억장치 사이에 있는 주 기억장치를 보조기억장치의 캐싱 계층이라고 할 수 있는 것.. 지역성의 원리 캐시 계층을 두는 것 말고 캐시를 직접 지정하기 설정할 때에는 어떻게 해야하남?? -> 자주 사용하는 데이터를 기..

메모리는 전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치를 말한다. 보통 RAM; Ramdom Access Memory 를 일컬어 메모리라고 한다. CPU는 계산을 담당하고 메모리는 기억을 담당! 공장에 비유하자면 CPU 는 일꾼이고 메모리는 작업장이며, 작업장의 크기가 곧 메모리의 크기다!! 작업장의 크기가 클수록 창고에서 물건을 많이 가져다 놓고 많은 일을 할 수 있듯이 메모리가 크면 클수록 동시에 많은 일을 할 수 있다!! CPU 는 단순히 메모리에 올라와 있는 프로그램의 명령어들을 실행할 뿐!!! 메모리 계층 레지스터 : CPU 안이 있는 작은 메모리로 휘발성, 속도가 가장 빠름, 기억용량이 가장 작음 캐시 : L1, L2 를 얘기함, 휘발속, 속도 빠름, 기억용량 적음 주기억장치: RAM..

CPU; Central Processing Unit CPU는 산술논리장치, 레지스터, 제어장치로 구성되어있는 컴퓨터 장치를 얘기합니다. 단순히 메모리에 존재하는 명령어를 해석해서 실행시키는 일꾼이라고 생각하면 됩니다. 제어장치 CU; Control Unit : 프로세스 조작을 지시하는 CPU의 한 부품. 명령어들을 읽고 데이터 처리를 위한 순서를 결정한다. 레지스터 : CPU 안에 있는 매우 빠른 임시기억장치. CPU와 직접 연결되어 있기 때문에 연산 속도가 메모리보다 수십배 수백배 빠르다. CPU는 자체적으로 데이터를 저장할 방법이 없기 때문에 레지스터를 거쳐 데이터를 전달함.. 산술논리연산장치 ALU; Arithmetic Logic Unit : 덧셈 뺄셈 같은 두 숫자의 산술 연산과 배타적 논리합, ..