5장 컴퓨터 아키텍처와 운영체제 (1)

young·2022년 7월 21일
0

📖 5장 keywords

  • 컴퓨터 아키텍처: 컴퓨터의 여러 구성요소를 배치하는 방법

  • 함수 / 스택

  • 멀티 태스킹

  • 운영 체제: 멀티 태스킹을 하기 위한, 프로그램 실행 제어 프로그램


기본적인 구조 요소들

가장 흔한 컴퓨터 구조 2가지는 폰 노이만 구조하버드 구조다.
두 구조는 메모리 배열 방식에서 차이가 있다.

폰 노이만 구조는 데이터 버스와 주소 버스가 1개 뿐이라 명령어와 데이터를 동시에 가져올 수 없고,
하버드 구조는 각각의 메모리에서 동시에 가져올 수 있어서 비교적 빠르지만, 메모리를 처리하기 위한 버스가 더 필요하다.

프로세서 코어

단일 CPU보다 훨씬 더 좋은 성능을 얻기 위해 1980년대 멀티프로세서 시스템이 등장한다.
기계가 빨라지면서 전력을 더 많이 소모하고, 단위 면적당 열 발생은 더 많아졌다.
그리하여 2000년경 프로세서는 전력 장벽에 부딪힌다.
열 발생을 낮추면서 회로를 소형화 고성능화 하기가 어려워졌다는 것이다.

예전에 CPU라고 부르던 것을 요즘은 프로세서 코어라고 한다.
이제는 일반적으로 프로세서 코어가 여러 개 있는 멀티코어 프로세서가 쓰인다.

마이크로프로세서와 마이크로컴퓨터

마이크로프로세서: 메모리와 I/O가 프로세서 코어와 같은 패키지에 들어있지 않은 프로세서(부품)

마이크로컴퓨터: 모든 요소가 하나로 패키징된 단일 칩의 작은 컴퓨터


프로시저, 서브루틴, 함수

= 프로그래밍 언어에 따라 다른 이름을 갖지만 같은 역할을 한다.
코드를 재사용하는 주요 수단

함수를 호출하는 부분에서 함수를 실행하고 다시 원래 자리로 돌아올 방법이 필요하다.
->돌아오기 위해서는, 멈췄던 위치를 기억해야 한다.
->멈췄던 위치는 프로그램 카운터의 값이다.

💡 함수 호출 흐름

  1. 반환 주소 저장
  2. 함수 파라미터 값을 누산기에 넣기
  3. 함수로 분기 -> 함수 실행 -> 간접 분기(반환)
  4. 함수 반환 뒤에 실행 계속함
  5. 반환 주소

반환 주소는 프로그램이 시작하는 100번지부터 5개의 명령어가 지난 다음이다. 이 값을 200번지에 넣는다.
즉, 200번지는 함수에서 돌아올 주소를 저장하기 위해 미리 확보해둔 메모리의 위치가 되는 것이다. (200번지에 105번지를 넣는 것)

함수의 실행이 끝나면 200번지의 값을 사용해 간접 분기를 한다.
따라서 105번지로 돌아올 수 있게 된다.

대부분의 기계는 이런 복잡한 과정의 수행을 돕는 명령어를 제공한다.


스택

재귀: 함수가 자기 자신을 호출하는 함수

예를 들어, JPEG 압축을 사용해 사진 크기를 감소시키는 방법 또한 재귀적 분할을 사용한다.

재귀함수가 제대로 작동하려면 반환 주소를 여럿 저장할 수 있어야 한다.
그리고 함수에서 호출 지점으로 반환할 때 저장한 주소 중 어떤 주소를 사용할지 결정할 수 있어야 한다.

재귀 함수가 실행되는 모습은 트리 구조로 그릴 수 있다. 트리 구조에서 리프 노드(leaf node)는 맨 끝에 위치한, 화살표가 뻗어나가지 않는 노드를 말한다.

깊이 우선 순회는 리프 노드에 도달할 때까지 아래로 내려가고, 리프 노드에 도달하면 가장 가까운 옆의 노드로 이동한다.

너비 우선 순회는 옆에 있는 노드를 먼저 방문하고, 그 후 아래쪽 노드를 방문하는 방식이다.

트리에서 한 수준을 내려갈 때마다 돌아올 위치를 기억해야 한다. 일단 원래 위치로 돌아오고 나면, 저장했던 위치는 더 이상 필요하지 않다.

Stack

후입 선출의 구조
push해서 넣고, pop해서 제거한다.
push하는데 더 이상 들어갈 공간이 없으면 stack overflow라고 하고, 빈 스택에서 pop하려는 경우를 stack underflow라고 한다.
독립적으로 스택에 저장되는 데이터의 모음은 stack frame이라 한다.

모든 함수는 자신이 200번지를 통해 전달받은 반환 주소를 나중에 사용하기 위해 스택에 넣을 수 있다.

스택은 컴퓨터 언어에만 한정되지 않는다. 한국어나 일본어는 스택 기반 언어다.
목적어를 스택에 넣고 그 다음에 오는 동사는 스택에 있는 명사에 작용한다.


인터럽트 시스템

컴퓨터 프로세서가 실행중인 프로그램을 잠시 중단시키고, 다른 일을 처리하는 시스템 (event)
적절한 신호가 들어오면 CPU 실행을 잠깐 중단시킬 수 있는 핀이나 전기 연결을 포함한다.

인터럽트 핸들러 함수가 작업을 다 마치면 원래 실행 중이던 프로그램이 중단된 위치부터 다시 실행을 계속한다.

  1. 인터럽트에 대한 적절한 응답 시간
  2. 인터럽트를 service하고 원래대로 돌아올 state를 저장할 방법이 필요하다.

인터럽트 시스템은 돌아올 위치를 스택에 저장한다.


상대 주소 지정

여러 프로그램을 동시에 실행하기 위해서는 관리자 프로그램(운영체제)이 필요하다.
운영체제 = OS = 시스템 프로그램
그 외 다른 모든 프로그램을 사용자 프로그램 또는 프로세스라고 부른다.

상대 주소 지정을 사용하면, 절대 주소 지정과 다르게 프로그램을 메모리의 원하는 위치로 자유롭게 재배치 할 수 있다.

profile
즐겁게 공부하고 꾸준히 기록하는 나의 프론트엔드 공부일지

0개의 댓글