블로그 이미지
vee

카테고리

분류 전체보기 (17)
void (1)
Information (0)
Develop (5)
Linux (3)
Hardware (3)
Operating system (5)
Total
Today
Yesterday

달력

« » 2026.7
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

8.1.1 기본 하드웨어

 

- 기계 명령어들은 메모리 주소만을 인수로 취하며, 디스크의 주소는 인수로 취하지 않는다.

- 모든 실행되는 명령어와 데이터는 주 메모리와 레지스터에 있어야 한다.

- 레지스터들은 일반적으로 CPU clock의 1cycle 내에 접근이 가능하다.

- 주 메모리의 접근을 완료하기 위해서는 많은 CPU clock tick cycle이 소요되며, 이 경우 명령어를 실행하지 못하고 지연되는 현상이 발생한다.
이를 해결하기 위하여 Cache를 사용한다.

- 접근 속도의 차이에 대한 고려 외에User program으로부터 운영체제 영역을 보호하고 프로그램의 충돌을 방지하는 작업을 수행해야 한다. (하드웨어 지원)

 

  1. 각각의 프로세스는 독립된 메모리 공간을 가진다.
  2. 이를 위해 특정 프로세스만 접근할 수 있는 legal 영역을 설정하고 프로세스가 이 영역만을 접근하도록 하는 것이 필요하다.
  3. Base와 Limit 레지스터를 사용하여 이러한 보호 기법을 구현한다.

Figure1. Base Limit Registers

Base Register: 가장 작은 legal 주소 값을 저장한다.
Limit Register: 주어진 영역의 크기를 저장한다.

 

4. 메모리 공간의 보호는 CPU 하드웨어가 User mode에서 만들어진 모든 주소와 레지스터를 비교함으로써 이루어진다.
User mode에서 실행되는 프로그램이 자신의 메모리 영역이 아닌 다른 메모리 영역을 침범하면 운영체제는 치명적인 에러로 간주하고 trap을 발생시킨다.

 

5. Kernel mode에서 실행되는 프로세스는 메모리 접근에 어떠한 제약도 받지 않는다. (운영체제는 Kernel에서 실행된다.)
운영체제는 User program을 User memory 영역에 적재하고, 에러가 발생한 경우 그 프로그램을 dump out시키고 system call의 parameter 값을 변경하는 것과 같은 일들을 할 수 있다.

 

8.1.2 주소의 할당 (Address Binding)

 

프로그램이 실행되기 위해서는 프로세스가 되어야 한다.
사용하는 메모리 관리 기법에 따라 프로세스는 실행하는 동안 디스크와 주 메모리 사이를 왔다 갔다 할 수 있으며 input queue를 형성한다.

 

대부분의 시스템은 사용자 프로세스가 메모리 내 어느 부분으로도 올라올 수 있도록 지원하고 있다.
즉 사용자 프로세스는 상대적 주소를 가질 수 있다. (각 프로세스마다 논리적 0번지를 가질 수 있다.)

 

원시 프로그램에서 주소는 숫자가 아닌 심벌로 표현되며 컴파일러는 이 심벌 주소를 재배치 가능 주소로 바인딩 시키고, 추후에 Linkage editor나 loader가 재배치 가능 주소를 절대 주소로 바인딩 시킨다.


각각의 바인딩 과정은 한 주소 공간에서 다른 주소 공간으로 맵핑하는 것.

 

Compile time binding

프로세스가 메모리 내의 특정 위치를 사용하는 것을 컴파일 할 때 알 수 있으면 컴파일러는 절대 코드를 생성할 수 있다.
ex) MS-DOS의 .COM양식 프로그램

 

Load time binding

컴파일 시점에 프로세스가 메모리 내 위치를 알지 못하면 컴파일러는 이진 코드를 재배치 가능 코드로 만들고,
프로그램이 주 메모리로 실제로 적재될 때 심볼 주소와 절대 주소가 바인딩된다.

 

Execution binding

프로세스가 실행 중 메모리 내에서 옮겨질 수 있다면 바인딩이 실행 시간까지 허용되었다고 말할 수 있다.
(특별한 하드웨어를 이용해야 한다.)

 

8.1.3 Logical-Versus Physical-Address Space

Logical address: CPU가 생성하는 주소

Physical address: MAR에 주어지는 주소로서 메모리가 취급하는 주소

  • Compile time binding의 경우 Logical address == Physical address
  • Load time binding은 Logical address와 Physical address가 같으며 이 경우 Logical address를 Virtual address라 한다.

Logical address space: 프로그램에 의해 생성된 모든 논리 주소 집합

Physical address space: Logical address space에 상응하는 모든 물리 주소 집합

프로그램 실행 중에는 Virtual address와 Physical address를 Mapping해주는 작업이 필요한데, 하드웨어 장치인 Memory Management Unit에 의해 구현된다.

Posted by vee
, |

05.23

void / 2013. 5. 23. 01:17

목표를 이루는 것은 쉬운 것이 아니다.

그것을 이루기까지 많은 노력과 인내가 요구된다.


최선의 답을 찾아내고 지금 당장 무엇을 해야하는 지를 알고있지만 그것을 실행하는 것이 쉽지가 않다.

 실행력이 부족한 것인가, 아니면 자신을 고려하지 못한 판단의 문제일까?

Posted by vee
, |

디스크 블록

Hardware / 2012. 8. 22. 22:29

전산 분야에서 블록(block)은 기억 공간을 나누는 단위이다.


디스크 블록은 파일 시스템에 따라 나뉘는 블록을 의미한다.

여기서 특별한 블록들이 있는데,


부트 블록

디스크의 가장 첫 번째에 위치하는 블록으로 운영체제를 구동하가 위한 정보를 가지고 있다.


슈퍼 블록

파일 시스템과 관련된 정보들이 저장된 곳을 알려주는 메타 자료가 기록된 블록.

이 데이터는 손실시 매우 치명적이기 때문에 일반적으로 여러 곳에 사본을 저장한다.


파일 제어 블록(FCB)

파일에 연관된 구체적인 정보들이 기록된 블록


(참고)

메모리 블록

운영체제 또는 프로그램이 기억공간을 임의적으로 분할하여 사용하는 하나의 단위를 의미.

블록의 크기가 일정한 것을 페이지, 그렇지 않은 것을 세그먼트라고 한다.




자료의 출처는 위키백과 입니다.

'Hardware' 카테고리의 다른 글

산술 논리 연산 장치 (ALU)  (0) 2012.08.21
CPU 혹은 Microprocessor 와 Register(레지스터)  (0) 2012.08.21
Posted by vee
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함