ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [컴퓨터 시스템] 2일차
    교육 2019. 10. 15. 00:33

    - 아래 내용은 '컴퓨터 시스템(3판)' 책을 바탕으로 몰랐던 내용이나, 알고 있더라도 머릿속에 좀 더 각인시키면 좋을 것 같은 내용 위주로 기록했다. 

    - 자세한 정리보단, 핵심만 남기는 것을 선호하는 편이라 친절하지 않을 수 있다.

    - 깊이 있는 학습을 원한다면 별도로 책(컴퓨터 시스템(3판))을 구입하여 학습하길 권한다.

    - 스스로 언제든 틀릴 수 있다는 사실을 인식하고 있기 때문에, 피드백은 언제나 환영한다. 

    - 목표는 기본기 튼튼한 프로그래머가 되기 위함이다.

     

     

     


    Context Switch


    - OS는 현재 프로세스에서 다른 프로세스로 제어를 옮길 때 현재 프로세스의 context(프로세스의 상태 정보)를 저장하고, 새 프로세스의 context를 복원시킴. 이를 Context Switch라고 함

    - OS에서 말하는 Context(상태 정보)CPU가 프로세스를 실행하기 위한 해당 프로세스의 정보들

    - Context는 프로세스의 PCB(Process Control Block)에 저장됨
    - Interrupt에 의해 Context Switch 발생

    PCB 구조

     

     

    Virtual Memory


    - 프로세스들이 메인 메모리 전체를 독점하고 있는 것 같은 착각을 제공하는 추상화 개념

    - 제한 physical memory의 한계를 극복하고자 디스크와 같은 느린 저장장치를 활용해, 애플리케이션들이 더 많은 메모리를 활용할 수 있게 해주는 것

    - 프로세스의 logical memory와 physical memory를 분리시킨 개념

    - Page란, 가상 메모리를 사용하는 최소 크기 단위

    - 프로세스마다 아래 그림처럼 virtual memory를 가짐

    위쪽으로 갈수록 주소가 증가

     

    - 리눅스에서는 주소 공간의 최상위 영역은 모든 프로세스들이 공통으로 사용하는 운영체제의 코드와 데이터를 위한 공간이 있음

    - virtual memory는  아래 영역으로 구성되어 있음

    • 프로그램 코드와 데이터
      - 프로그램 코드는 모든 프로세스들이 같은 고정 주소에서 시작함
      - 다음에 전역 변수들이 옴
      - 크기가 고정되어 있음
    • Heap 
      - C 표준 함수인 malloc이나 free를 호출하면서 런타임에 동적으로 크기가 늘었다 줄었다 하는 영역
    • 공유 라이브러리
      - C 표준 라이브러리나 수학 라이브러리와 같은 공유 라이브러리의 코드와 데이터를 저장하는 영역
    • Stack
      - 컴파일러가 함수 호출을 구현하기 위해 사용하는 영역
      - 힙과 마찬가지로 User Stack은 프로그램이 실행되는 동안에 동적으로 늘었다 줄었다 함
    • 커널 가상 메모리
      - 주소 공간의 맨 윗부분은 커널을 위해 예약되어 있음
      - 응용프로그램들은 커널 영역의 내용을 직접 읽거나 쓰는 것이 금지되어 있음
      - 대신, 이런 작업을 수행하기 위해서는 커널을 호출해야 함

     

     

    참고


    컴퓨터 시스템(3판)

     

     

    '교육' 카테고리의 다른 글

    [컴퓨터 시스템] 3일차  (0) 2019.11.12
    [Node.js] 13일차  (0) 2019.10.09
    [컴퓨터 시스템] 1일차  (0) 2019.10.07
    [Node.js] 11일차  (1) 2019.09.27
    [Node.js] 10일차  (0) 2019.09.25

    댓글

Designed by Tistory.