전체 글
-
바인딩(Binding), 바인딩 타임(Binding Time)전공/시스템프로그래밍 2020. 6. 8. 11:09
바인딩(Binding) 바인딩이란, 묶는다는 것이다. 무엇을 묶느냐 하면, 변수, 배열 등의 변수와 그에 해당하는 값을 묶는다. 바인딩은 크게 두 가지의 종류로 나뉜다. 정적 바인딩(Static Binding) 묶긴 묶는데 정적, 고정되게 묶는다. 여기에 보면 시스템 프로그래밍의 간략한 구조도가 나오는데, 여기서 컴파일, 링크, 로드를 할 때 진행되는 바인딩을 정적 바인딩이라고 한다. 동적 바인딩(Dynamic Binding) 로더의 4단계를 보면 allocation-linking-relocation-load가 있다. 이후 프로그램이 실행되는데, 이 실행 단계에서 이루어지는 바인딩을 동적 바인딩이라고 한다. 정적 바인딩보다 상대적으로 늦게 하기 때문에 늦은 바인딩이라고도 불린다...
-
인텔 프로세서의 내부 구조전공/시스템프로그래밍 2020. 6. 8. 05:36
수업에서 설명하는 모든 내용은 32비트가 아닌 16비트를 기준으로 한다. 3.1 32비트 인텔 프로세서 3.1.1 펜티엄 프로세서의 개요 펜티엄 프로세스는 한 클럭에 두 개의 명령어를 실행할 수 있는 슈퍼 스칼라 구조(Super Scalar Structure)를 가지고 있다. 슈퍼스칼라 구조는 Flinn의 컴퓨터 분류 중 MIMD에 속한다. Flinn의 컴퓨터 분류 설명은 여기로. 3.1.2 32비트 프로세서의 실행 환경 3.1.3 기본 프로그램 실행 레지스터 32비트는 취급하지 않을거라서 간단히 훑고 지나간다. 컴퓨터 동작의 기본 개념 포스팅에서 사용한 프로세서의 구조를 재사용했다. 범용 레지스터는 일반적인 연산을 하는 레지스터이다. 각 용어들을 알 필요는 없다. 그냥 구조가 이렇다는 것만. ..
-
실수를 비트로 표현하는 방법, 부동소수점전공/시스템프로그래밍 2020. 6. 8. 03:33
int a = 3; 을 32비트로 표현하면 어떻게 될까. 십진수 3을 이진수로 바꾸면 011이다. 이 값을 32자리 중 가장 끝자리에 위치시킨다. □□□□□...(29개의 빈칸□)011 그렇다면 float b = 6.25; 일 때 실수 b를 32비트로 표현하려면? '부동소수점' 방식을 활용하여 각 비트를 채워야한다. 32비트는 32개의 칸(□)으로 이루어져있다. 이를 부동소수점으로 표현할 때는 구간별로 특징이 존재한다. □ □□□□□□□□ □□□□...(23개의 빈칸)□□□ 가장 높은 수를 나타내는 한 자리는 부호 비트를 나타낸다. 중간의 8자리는 지수를 나타내는 부분이다. 나머지 23자리는 가수를 나타내는 부분이다. 간단히 예시를 들어 설명해보겠다. -11..
-
연산 단위, 컴퓨터 조직, 명령어 실행의 4단계전공/시스템프로그래밍 2020. 6. 8. 01:31
컴퓨터 연산 단위 - bit → (nibble, 기종따라 다름) → byte → word(4byte) → record(word의 집합) → (block) → file(record의 집합) - byte/word machine은 byte/word 단위로 넣고 빼는 것을 말한다. - 보수를 사용하면 감산기(subtractor) 없이 가산기만으로 연산이 가능하다. 컴퓨터 조직 컴퓨터 조직을 개략화하면 아래와 같은 구조이다. 시스템 버스를 통해 메모리, I/O 장치, 프로세서가 값을 주고 받는 구조다. 이걸 보다 간단하게 나타내면 아래와 같은 형태가 된다. 프로세서 아래는 프로세스의 구조이다. 교수님께서 언급하신 부분만 설명하겠다. 임시 저장 레지스터 변수값을 임시로 저장하기 위해 사용한다. ..
-
링커, 로더, 번역기(Translator), 프로그램 실행과정전공/시스템프로그래밍 2020. 6. 6. 20:19
링커 원래의 프로그램이 너무 크면 여러 개의 모듈로 잘라서 어셈블러에 의해 기계어로 변환된다. 이때 모듈별로 서로 다른 object 모듈이 생성되고, 얘들이 보조기억장치에 저장된다. 목적 모듈들을 실행시킬 때는 개별이 아닌 한 묶음으로 실행되어야 하는데, 이 때 링커를 통해 목적모듈들을 연결한다. 로더 링커를 통해 합쳐진 하나의 프로그램은 로더를 통해 메모리에 적재되고 실행할 준비를 마치게 된다. 어셈블러가 로더의 역할을 대신할 수도 있지만 그러려면 어셈블러가 기억장소의 공간을 사용해야 된다. 어셈블러의 크기가 로더보다 훨씬 더 크기 때문에 비효율적이다. 그래서 로더라는 새로운 프로그램을 쓰는 것이다. 로더는 이전에도 언급했듯이 링킹이 없으면 모듈로더, 있으면 상대로더라고 했다. ..
-
로더의 4단계전공/시스템프로그래밍 2020. 6. 6. 19:17
수업 시작한지 얼마 안되서 부프로그램이 뭔지 몰라 쪽을 당했다.. 부프로그램이란 하나의 프로그램을 작은 프로그램들로 나눈 것인데, 거의 함수와 비슷하게 쓰인다. 이걸 몰라가지고 교수님께서 나보고 C에서 부프로그램 안써봤냐고 하시길래 '저.. 저는 비주류 언어를 공부해가지고 잘 모르겠습니다' 라는 쌉소리를 해버렸다.. 시스템 프로그램 시스템프로그램은 어플리케이션 프로그램을 실행시켜주기 위한 시스템이다. H/W 위에 S/W가 탑재되는 건 자명한 사실이다. 여기서 S/W 안에서 두 계층(시프/어플)으로 나뉜다. 로더 로더는 프로그램을 메모리에 적재하는 역할을 한다. 이러한 과정은 4단계로 나뉜다. 1. Allocation(할당) 프로그램을 할당할 수 있을만한 공간을 찾는다. 2. ..
-