본문 바로가기

학교 공부54

[시스템] 메모리 주소 지정 방식 종류 어셈블리어에서 메모리 주소를 지정해주는 방식이 다양한 것을 볼 수 있다. 이참에 정리를 해보려 한다. 1. 레지스터 주소 지정 : 레지스터의 주소 값을 직접 지정하여 복사, 가장 빠름 (ex) MOV DX, BX 2. 직접 메모리 주소 지정 : 가장 일반적인 주소 지정 방식 보통 피연산자가 메모리 위치를 참조하고, 다른 하나는 레지스터를 참조함 (ex) MOV AL, DS:[1234h] MOV DS:[1234h], AL 3. 레지스터 간접 주소 지정 : '세그먼트 : 오프셋' 형식 (ex) MOV AL, [BX] MOV AL, [BP+20h] 4. 인덱스 주소 지정 : 레지스터 간접 지정 방식에 변위가 더해진 메모리 주소 지정 방식 (ex) MOV AL, [BX+20h] MOV AL, 20h [BX] 5.. 2021. 3. 17.
[시스템] x86 시스템, 메모리 접근 모드와 동작 x86 시스템의 메모리 접근 모드와 동작 1. 실제 모드 : 20비트 주소를 사용하며, 논리 주소(20bit) = 세그먼트 레지스터 + 오프셋 레지스터 ** CS - IP DS - SI, DI, BX SS - SP, BP ES - SI, DI, BX 2. 보호 모드 : 32비트 주소를 사용하며, 현재 많이 사용하고 있는 MS-Window 혹은 리눅스에서 동작하는 방법이다. 동작 방법은 셀렉터+오프셋 -> 세그먼트 -> (선형구조) -> 페이징 -> 물리 주소 ** 실제 모드를 아직까지도 사용하고 있는 이유는 x86 시스템의 DOS 프로그램 호환성 때문이라고 함. 2021. 3. 17.
[시스템] x86 시스템, 레지스터 종류 정리(핵심/간단) x86 시스템의 레지스터 종류 1. 범용 레지스터 - EAX : 누산기, 산술 연산 저장 - EBX : 베이스 레지스터, 특정 주소 저장 - ECX : 카운트 레지스터, 루프 횟수 혹은 시프트 비트수 저장 - EDX : 데이터 레지스터, 주로 입출력 동작에서 데이터 저장(큰 수에서는 EAX레지스터와 함께 사용) ** EAX(32비트) > AX(16비트) > AH+AL(각각 8비트) / EBX(32비트) > BX(16비트) > BH+BL(각각 8비트) ECX(32비트) > CX(16비트) > CH+CL(각각 8비트) / EDX(32비트) > DX(16비트) > DH+DL(각각 8비트) 2. 세그먼트 레지스터 - CS : 코드 세그먼트 레지스터, 기계 명령 포함 - DS : 데이터 세그먼트 레지스터, 데이터.. 2021. 3. 17.
[내장형 시스템] 모듈 프로그래밍 초창기 리눅스 시스템은 Monolithic 시스템 구조이다. 시스템 일부를 수정하더라도 리눅스 전체를 다시 컴파일하고 재부팅해야 한다는 단점을 가졌다. 이후 모듈을 이용한 모듈 프로그래밍이 나오게 되었고, 커널 시스템 일부를 커널이 동작하는 과정에서 load/unload가 가능해졌다. 필요 없는 커널들, 자주 사용하지 않는 모듈들은 메모리에 적재시키지 않아도 되기 때문에 메모리 사용량이 최소화되고, 확장성 유연성을 제공한다. 모듈 프로그래밍 장점 - Device Driver를 사용할 때 유용하다 - 파일 시스템, 통신 프로토콜 및 시스템 콜 등 또한 모듈로 구현이 가능하다. 모듈 프로그래밍 특징 - event-driven 방식으로 작성 - 커널 적재 및 제거를 위한 규칙과 유틸리티가 필요하다. - obj.. 2020. 12. 2.
[내장형 시스템] 시스템 콜이란? 시스템 콜이란? : 사용자 프로세스가 운영체제에게 특정한 프로세스를 요청(화면 디스플레이 혹은 자원 요청)할 때, 시스템 콜을 통해 프로세스를 수행한다. Q. 표준 라이브러리 소스가 어떠한 과정으로 시스템 콜이 이뤄지는가? : fork() 라는 시스템 콜 호출 -> fork() 함수는 소프트웨어 인터럽트가 발생되는 코드를 지님 -> 사용자 프로세스에서 커널 프로세스로 전환 -> 시스템을 호출하여 커널 함수 실행 -> 시스템 콜을 한 명령 실행 -> 이전에 제쳐둔 프로세스 나머지 마저 수행 Q. 소프트웨어 인터럽트가 발생되는 코드 구현은 어떻게 되어있을까? (old version linux의 경우) : 라이브러리 함수 호출 -> 시스템 콜 번호 등록 -> 소프트웨어 인터럽트 발생(x86 CPU 상에서) -.. 2020. 12. 2.
[분산 및 병렬처리 시스템] Client-Server 가상화 앞 전 글에는 운영체제 가상화(Operating system Virtualization)을 공부했다. 이번엔 Client-Server Architecture에서 가상화를 위한 고려 사항을 알아보자. Virtualization(가상화)란? 대표적인 가상화는 CPU가 하나만 존재하지만, 여러 프로세스를 운영하는 것처럼 환상을 주는 것이다. Client-Server 가상화 그림 3-8(a)는 socket 통신으로 생각할 수 있다. 웹 서비스 프로토콜(HTTP)를 통해 client와 server가 통신할 수 있도록 한다. 동일한 프로토콜을 사용하기 위해서 middle ware를 통해 상호작용하거나 통일화시킨다. 그림 3-9은 XWindow System이 존재한다. 현재는 존재하지 않는, 유닉스 계열의 분산 시스.. 2020. 11. 20.