반응형

전체 글 100

Ubuntu 라이브러리 생성

이전에 생성했던 hello 시스템콜을 사용해 라이브러리를 생성한다. 1. Static Library $ vi hello.c $ gcc –c hello.c $ ar rc libhello.a hello.o $ vi static.c $ gcc static.c –o static –L./ -lhello $ ./static 2. Shared Library $ vi hello.c $ gcc –fPIC –c hello.c –o hello.o $ gcc –shared –o libhello.so.0.0.0 hello.o $ sudo cp libhello.so.0.0.0 /usr/lib/libhello.so.0.0.0 $ sudo ln –s /usr/lib/libhello.so.0.0.0 /usr/lib/libhello.s..

Ubuntu 시스템콜 추가

1. 간단한 시스템콜 소스코드 추가 $ cd /usr/src/linux-5.5.16 $ sudo vi kernel/hello.c 시스템 콜 핸들러 함수는 리눅스 커널에서 제공하는 SYSCALL_DEFINE1과 같은 매크로 함수로 선언되어 있다. SYSCALL_DEFINEx(시스템 콜 이름, 1st 인자 타입, 1st 인자 이름, 2nd 인자 타입, 2nd 인자 이름,...) x는 매개변수 개수를 나타낸다. 2. 시스템콜 테이블에 엔트리 추가 $ cd /usr/src/linux-5.5.16 $ sudo vi arch/x86/entry/syscalls/syscall_64.tbl '436 common hello __x64_sys_hello' 추가 위와 같은 형태로 선언 해야한다. 3. 헤더파일에 시스템콜 선언..

컴퓨터 구조 Ch04_"The Processor-4"

4.6 파이프라인 데이터 패스 및 제어 1. IF(Instruction Fetch) : 명령어 인출 2. ID(Instruction Decode) : 명령어 해독 및 레지스터 파일 읽기 3. EX(Execute) : 실행 또는 주소 계산 4. MEM(Memory Access) : 데이터 메모리 접근 5. WB(Write Back) : 쓰기 명령어와 데이터는 실행되면서 5단계를 왼쪽에서 오른쪽으로 움직여 간다. 하지만 2개의 예외가 존재한다. 쓰기단계 : 이 단계에서는 결과를 데이터 패스의중앙에 있는 레지스터 파일에다 쓴다 PC의 다음값 선정 : 증가된 PC 값과 MEM 단계의 분기 주소중 하나를 고른다. 파이프라인을 사용한다면 각 단계가 진행될때마다 PC의 값은 계속 변할 것이다. 따라서 단계 사이마다 ..

컴퓨터 구조 Ch04_"The Processor-3"

4.5 파이프라이닝에 대한 개관 파이프라이닝(Pipelining)은 여러 명령어가 중첩되어 실행되는 구현 기술이다. 오늘날에서는 보편적 기술이다. 예를들어 파이프라인되지 않는 세탁 방법을 설명하면 1. 세탁기에 한 묶음의 옷을 넣는다. 2. 세탁기가 종료되면 젖은 옷을 건조기에 넣는다. 3. 건조기가 종료되면 건조된 옷을 탁자 위에 놓고 정리한다. 4. 정리가 종료되면 같은 방 친구에게 옷을 넣어 달라고 부탁한다. 하지만 위 그림의 아랫 부분을 보는바와 같이 파이프라인 방법은 훨씬 시간이 적게 걸린다. 단계(stage)가 종료되면 해당 단계의 자원이 할당 해제되기 때문에 사용가능함을 최대로 이용하는 것이다. 각 단계를 위한 별도의 자원이 있는 한 작업들을 파이프라인화 할 수 있다. 파이프라인의 역설적인 ..

컴퓨터 구조 Ch04_"The Processor-2"

4.4 단순한 구현 4.3 의 데이터패스에 단순한 제어기능을 추가하여 단순한 구현을 만들고자 한다. LDUR, STUR, CBZ, ADD, SUB, AND, ORR 을 포함한 LEGv8의 부분집합을 구현한다. ALU 제어 LDUR, STUR 경우에는 메모리 주소를 계산하기 위한 덧셈용으로 ALU를 사용 R-type 명령어 경우에는 명령어 비트 11비트 opcode 필드값에 따라서 4가지 연산(AND, OR, SUB, ADD)중 하나를 수행 CBZ 명령어의 경우 ALU는 레지스터 입력값을 그냥 통과시킨다. 명령어의 opcode 필드와 ALUOp라 불리는 2비트 제어필드를 입력으로 ALU 제어 입력을 발생시킨다. ALUOp 가 10 일때에는 opcode 값이 ALU 제어 입력을 결정하는데 쓰인다. 이러한 제..

컴퓨터 구조 Ch04_"The Processor-1"

4.1 서론 프로세서를 구현하는 데 사용하는 원리와 기법들에 대한 설명 LEGv8 명령어 집합 핵심 부분의 구현을 설계 LDUR(lw), STUR(sw), ADD, SUB, AND, ORR, CBZ, B 모든 명령어의 첫 두단계는 다음과 같이 동일하다. 1. 프로그램 카운터(PC)를 프로그램이 저장되어 있는 메모리에 보내어 메모리로부터 명령어를 가져온다. 2. 읽은 레지스터를 선택하는 명령어 필드를 사용하여 하나 또는 두 개의 레지스터를 읽는다. LDUR, CBZ 명령어는 하나만 읽으면 되지만 대부분의 다른 명령어는 레지스터 두 개를 읽는다. PC -> Instruction Memory, Fetch Instruction Register Numbers -> Register File, Read Registe..

운영체제 Ch02_'Operating-System Structure-1'

Chapter 2 운영체제 구조 2.1 운영체제 서비스 운영체제는 프로그램 실행환경을 제공, 프로그램과 그 프로그램의 사용자에게 특정 서비스를 제공한다. OS Service for user support User Interface : 사용자 인터페이스 (CLI, GUI, Batch) Program Execution : 프로그램을 메모리에 적재해 실행할 수 있다. 정상, 비정상 실행 종료 가능 I/O Operation : 실행 중인 프로그램의 입출력 요구, 사용자들은 입출력 장치를 직접 제어할 수 없다. File-system Manipulation : 권한을 확인하여 파일 read/write/create/delete/search/list 를 수행가능하다. Communications : 프로세스간 통신, 네..

책/운영체제 2021.01.03

운영체제 Ch01_'Introduction'

Chapter 1 서론 1.1 운영체제가 할일 컴퓨터 하드웨어를 관리하는 소프트웨어 응용 프로그램을 위한 기반을 제공 컴퓨터 하드웨어와 사용자 사이에서 중재자 역할 컴퓨터의 시스템의 구성요소 하드웨어, 운영체제, 응용 프로그램, 사용자 관점별 운영체제 사용자 관점 : 사용되는 인터페이스에 따라 달라진다. PC에서는 사용의 용이성에 초점, 자원의 이용에는 신경쓰지 않음 워크스테이션에서는 사용의 용이성과 자원활용, 휴대용 컴퓨터에서는 사용의 용이성, 자원절약 시스템 관점 : 하드웨어와 가장밀접하게 연관된 프로그램, 자원 할당자(CPU시간, 메모리공간, 파일저장), 제어프로그램(프로그램의 실행을 관리, 오용 방지)으로 인식 1.2 컴퓨터 시스템의 구성 현대의 시스템에는 CPU와 구성요소와 공유 메모리 사이의 ..

책/운영체제 2020.12.18

커널 컴파일(Ubuntu)

Centos Ubuntu 18.04, 1. 현재 사용하는 커널의 버전 확인 $ uname -r 2. www.kernel.org/ 통해 커널 다운로드 만약 원하는 커널 버젼이 5.4.84일때 $ cd /usr/src $ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.84.tar.xz $ tar xz -d linux-5.4.84.tar.xz $ tar xf linux-5.4.84.tar $ cd linux-5.4.84 3. 컴파일에 필요한 패키지 설치 $ apt install build-essential libncurses5 libncurses5-dev bin86 kernel-package libssl-dev bison flex libelf-dev..

반응형