본문 바로가기

about COMPUTER/컴퓨터 시스템12

# 메모리 관리 메모리 관리 # Logical vs. Physical Address  Logical address (=virtual address //가상 주소) • 프로세스마다 독립적으로 가지는 주소 공간 • 각 프로세스마다 0번지부터 시작 • CPU가 보는 주소는 logical address임  Physical address • 메모리에 실제 올라가는 위치 ** 주소 바인딩: 주소를 결정하는 것 : Symbolic Address  Logical Address  Physical address *Symbolic Address : 함수, 변수의 이름을 이용하여 접근하는 방식을 뜻함/ 이 화살표!! 이 시점이 언제인가? (next page) # 주소 바인딩 (Address Binding) Compile time bi.. 2020. 11. 24.
# 10. CPU 스케줄링 [ CPU 스케줄링 ] CPU 기능 - CPU는 프로그램의 기계어 명령을 실제로 수행하는 컴퓨터 내의 중앙 처리 장치. - 프로그램이 시작되어 메모리에 올라가면, 프로그램 카운터가 현재 CPU에서 수행할 코드의 메모리 주소값을 가리킴 - CPU는 프로그램 카운터가 가리키는 주소의 기계어 명령을 하나씩 수행하게 된다. # CPU 버스트, I/O 버스트 + CPU 버스트: 사용자 프로그램이 CPU를 직접 가지고 빠른 명령을 수행하는 일련의 단계 (계산 위주) - I/O 요청이 발생해 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계 프로그램이 I/O를 한 번 수행한 후 다음번 I/O를 수행하기까지 직접 CPU를 가지고 명령을 수행하는 작업을 CPU 버스트라고 한다. + I/O버스트: I/O작업이 요청된 .. 2020. 11. 5.
# 09. 프로세스 관리 # 프로세스 관리 + 프로세스 생성 (Process Creation) - 부모 프로세스(Parent process)가 자식 프로세스(children process) 생성 : 커널을 통해서 자식을 복제해달라고 요청해야 함 ?자식을 만드려면 사용자프로세스의 자격으로는 접근할 수 없는 영역이 있기 때문 - 프로세스의 트리(계층 구조) 형성 - 프로세스는 자원을 필요로 함  운영체제로부터 받는다  부모와 공유한다 - 자원의 공유  부모와 자식이 자원을 공유하는 모델 : 물리적인 공간은 한정적이므로 똑같은 데이터가 올라가 있으면 비효율적이므로 공유를 하여 사용하도록 한다.  공유하지 않는 모델 _이게 기본형 :경쟁하는 관계가 기본 프로그램 카운터는 무조건 복제해서 따로 쓴다. 원칙적으로는 서로 독립적인 프.. 2020. 10. 20.
# 08. 프로세스 [프로세스] 프로세스 : 지금 실행중인 프로그램 프로세스의 문맥 (context)가 매우 중요하다. 프로세스의 중간을 끊어서 봐도 어떤 과정 중인지 왜 이런 과정 중인지를 이해할 수 있으려면 문맥이 중요하다. 프로그램이 카운터가 어디를 가리키고 있는가 (프로그램이 어디까지 실행 됬는가) 프로세스의 메모리에 뭐가 저장되어 있는가 프로세스의 상태를 나타내는 모든 요소를 문맥이라고 한다. 하드웨어 문맥 프로세스의 주소 공간 : 메모리에 관련 프로세스 관련 커널 자료구조 : PCB 운영체제가 이 프로세스에 대해 어떤 값을 가지고 이쓴ㄴ지 : Kernel stack : 프로세스 혼자 실행되지 않기 때문에 (프로세스가 번갈아가며 실행되기 때문에) 프로세스의 현재 상태를 저장해놓지 않으면(문맥을 모르면) 다시 해당 .. 2020. 10. 20.
# 07. 하드웨어와 운영체제(2) / 메모리 관리 [ 하드웨어와 운영체제(2) - 메모리 관리 ] + 저장장치 계층 구조 (about 하드웨어 ) * 캐시(cache) : 메인메모리보다 작은 용량 - 메인 메모리의 일부만 저장하며 좀 더 빠른 저장소에 정보를 복사하는 것을 캐싱이라고 함 - 캐싱은 재사용성을 목적으로 함 - 똑같은 메모리를 여러 곳에서 요청하면 캐시를 이용하여 빠르게 보냄 - secondary는 main memory의 swap area로도 쓰일 수 있음 + 프로그램 실행시의 메모리 load 순서 작성한 코드가 컴파일 되면 실행파일 형태로 하드디스크(file system, 비휘발성)에 저장됨 이 파일이 실행되면 프로세스로 메모리에 로드되어 실행되는 것 근데 바로 물리적인 메모리로 가는 건 사실 아님 한단계 있는데 그건 바로 virtual .. 2020. 10. 15.
# 06. 하드웨어와 운영체제(1) / 컴퓨터 시스템 구조 [ 하드웨어와 운영체제(1) - 컴퓨터 시스템 구조 ] - CPU가 I/O 장치를 사용하기 위해 Device controller에 수행명령을 하고, I/O장치의 일이 끝나면 device controller가 interrupt line에 신호를 보내어 CPU가 I/O일을 마무리하도록 한다. - CPU는 하나의 intruction을 수행할 때마다 interrupt line을 확인한다. - timer : 운영체제가 부팅된 후 타이머(하드웨어 장치)에 일정한 시간을 부여한 후 cpu를 프로그램에 넘겨줌, => 어떤 프로그램이 CPU를 독점하지 못하도록 하는 장치 * 핵심 : 운영체제 부팅 – timer에 일정시간 설정 - A에게 CPU 넘김 - 일정시간 지난 후 다른 프로그램으로 CPU 넘김 + cpu를 뺏어서.. 2020. 10. 15.
# 05. 운영체제 OS [ 운영체제 (Operating System, OS) ] 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 # 범위에 따른 운영체제의 범위 + 협의의 운영체제 (커널) : 운영체제의 핵심부분으로 메모리에 상주하는 부분 + 광의의 운영체제 : 커널뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념 # 운영체제의 목적 + 관리대상 자원 : 하드웨어 + 프로세스 + 파일 등 ... (소프트웨어 자원도 관리대상 포함) + 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 + 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공 + 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행 + 컴퓨터 시스템의 자원을 효율적으로 관리 + 프로.. 2020. 10. 15.
# 04. 프로그램 컴파일 과정 (고급언어가 실행되기 까지) [ 고급 언어의 기계어 변환 및 실행 ] # 프로그램 빌드 과정 / 컴파일 과정 1) 고급 언어 프로그램(source file)이 컴파일러에 의해 컴파일되어 어셈블리 프로그램으로 변환시킨다. ** 컴파일러 : 고급언어로 작성된 명령어를 기계어로 변환하는 프로그램 2) 어셈블리 프로그램은 어셈블러를 통해 기계어 프로그램(object file)으로 변환된다. ** 어셈블러 : 어셈블리어를 기계로 변역하는 프로그램 ** 어셈블리어 : 기계어를 의미있는 단어로 바꾸어 사람들이 이해하기 쉽게 만든 언어 3) 이미 내장되어 있는 기계어 프로그램(object, library file)과 링커를 통해 링킹되어 실행파일(executable file / .exe)이 생성된다. ** 링커 : 여러 object file 및 .. 2020. 10. 15.
# 03. Procedure Call in MIPS # Procedure Call in MIPS * 모든 MIPS instruction은 32bit(=4byte)로 크기가 균일 † procedure : 특정 작업을 수행하기 위한 여러 연산의 묶음 ( =함수) + 호출 이후에도 값이 유지되어야 하는 registe의 저장 + return address의 저장 + argument의 전달 in MIPS, 레지스터의 각 칸은 나름의 각자 역할이 있다. * 0번째 칸은 항상 0만 저장한다 * A함수가 작업하다가 B함수를 호출할 때, A는 이미 레지스터를 맵핑을 하여 사용하고 있었을 것이다. 하지만 B도 레지스터에 맵핑해서 사용하고 싶을 것이다. 더 빠르니까 근데 B가 맵핑해버리면 A함수가 사용하던 데이터가 B에 덮여서 사라져버린다. 따라서 A가 사용하던 데이터(레지.. 2020. 10. 9.