728x90
블로그에 작성하면서 다시 복습하는 노트이다.
스터디 책은 '쉽게 배우는 운영체제-(한및아카데미)'를 사용했다.

MAR (메모리 주소 레지스터): CPU는 메모리에 있는 내용을 가져오거나 작업 결과를 메모리에 저장하기 위해 메모리 주소 레지스터를 사용한다.

 

메모리 관리의 이중성: 프로세스 입장에서 작업의 편리함과 관리자 입장에서 관리의 편리함이 충돌을 일으키는 것을 말한다.

 

계층적 메모리 구조: 메모리를 계층적 구조로 만들어 작업 속도를 올리고 가격을 낮추는 방법

 

컴파일러: 소스코드를 컴퓨터가 실행할 수 있는 기계어로 번역한 후 한꺼번에 실행한다. C언어, 자바 등이 있다.

 

인터프린터: 소스코드를 한 행씩 번역하여 실행한다. 자바스크립트, 베이직 들이 이 방식으로 프로그램을 실행한다.

 

컴파일러 목적

  • 오류 발견: 소스코드에서 오류를 발견하여 실행 시 문제가 없도록 하는 것이다. 컴파일러는 오류를 찾기 위해 symbol table(심벌 테이블)을 사용한다. 심벌 테이블은 변수 선언부에 명시한 각 변수의 이름과 종류를 모아놓은 테이블로, 선언하지 않은 변수를 사용하지는 않았는지, 변수에 다른 종류의 데이터를 저장하지는 않았는지 알 수 있다.
  • 코드 최적화: 사용하지 않는 변수를 삭제하면 더욱 간결해서 실행 속도가 빨라진다. 컴파일러는 실행하기 전에 코드를 점검하여 오류를 수정하고 최적화함으로써 작은 빠른 실행 파일을 만든다.

컴파일러와 인터프린터 목적

  • 크고 복잡한 프로그램에는 컴파일러를 사용하고 간단한 프로그램에는 인터프린터를 사용한다.

컴파일 과정

  1. 소스코드 작성 및 컴파일: 프로그래머가 C 언어나 자바로 소스코드를 작성하여 컴파일하면 목적 코드가 만들어진다.
  2. 목적 코드와 라이브러리 연결: 목적 코드가 만들어지면 라이브러리에 있는 코드를 목적 코드에 삽입하여 최종 실행 파일을 만든다.

Memory Manage Unit(메모리 관리 유닛): 메모리 관리자

  • fetch(가져오기 작업): 프로세스와 데이터를 메모리로 가져오는 작업이다. 메모리 관리자는 사용자가 요청하면 프로세스와 데이터를 모두 메모리로 가져온다.
  • placement(배치 작업): 가져온 프로세스와 데이터를 메모리의 어떤 부분에 올려놓을지 결정하는 작업이다. 배치 작업 전에 메모리를 어떤 크기로 자를  것인지가 매우 중요하다.
  • replacement(재배치 작업): 새로운 프로세스를 가져와야 하는데 메모리가 꽉 찼다면 메모리에 있는 프로세스를 하드디스크로 옮겨놓아야 새로운 프로세스를 메모리에 가져올 수 있따.

paging: 메모리를 같은 크기로 자르는 것을 페이징이라고 한다.

 

segmentation: 프로세스의 크기에 맞게 자르는 것을 세그먼테이션이라고 한다.

728x90

'운영체제_스터디' 카테고리의 다른 글

# DAY8 입출력 시스템과 저장 장치  (0) 2021.12.07
#DAY4 교착상태  (0) 2021.11.16
# DAY3 프로세스 동기화  (0) 2021.11.12

+ Recent posts