Category 771

Register

레지스터(Register) - 실행 중인 명령어를 제어하고, 메모리 번지를 지정하고, 산술연산을 수행 - 각각의 고유한 이름이 있고 이를 통하여 레지스터를 참조 ◆ 세그먼트 레지스터(Segment register) : 현재 세그먼트(current segment)인 메모리의 한 영역을 번지지정 1) CS(Code Segment) - DOS의 프로그램 코드 세그먼트의 시작 번지를 저장 - 이 번지에 명령어 포인터(instruction pointer, IP) 레지스터 내의 옵션 값을 더하면 실행을 위한 명령어의 번지가 된다. 2) DS(Data Segment) - 프로그램의 데이터 세그먼트 레지스터의 시작 번지를 기억 3) SS(Stack Segment) - 번지와 데이터를 임시로 저장할 목적으로 쓰이는 스택..

Study 2008.11.29

[OS 만들기] real mode, protected mode

real mode ? Real mode 란 컴퓨터에 전원이 들어온 후 cpu가 처음 움직이기 시작하면서 활동하는 모드. ex) MS-DOS 프로그램이 한 번에 한 개씩만 동작. 현재는 거의 사용하지 않음 아직까지 유지하는 이유는? 예전 8068 CPU용의 DOS프로그램을 현재에도 계속 사용할 수 있도록 하는 호환성 문제 때문 Protected Mode? 현재 많이 사용되고 있는 MS windows나 Linux가 CPU에서 동작되고 있는 모드 이 모드에서는 모든 프로그램아 한꺼번에 동작(사용자가 보기에만..실제로는 하나씩 빠르게 동작) user mode와 kernel mode로 구분 이 글은 스프링노트에서 작성되었습니다.

Study 2008.11.27

리눅스 부팅과정

리눅스 Booting 과정의 이해 Booting의 정의 커널이 메모리에 적재되고 초기화 코드가 수행되면서 하드웨어가 초기화 되고, 자료구조가 초기화 되어 사용자가 사용 가능한 환경을 조성하는 과정 Booting의 목적 processor 초기화 memory 점검 및 초기화 각종 하드웨어 점검 및 초기화 커널 loading 사용환경 조성 부팅 과정 도식도 - ppt 참조 ROM BIOS main board의 ROM 안에 내장되어 하드웨어의 Input/Output을 제어하는 프로그램, 크게 3부분으로 나눔 POST (Power On Self Test) 과정 전원 인가시 모든 부품 초기화 (기존 정보의 불확실성 -> 시스템의 오작동) 시스템의 이상유무 테스트 ex) CPU, VGA, RAM 시스템 초기화 ROM..

Study 2008.11.27

Linux 명령어

기본명령어 pwd : 현재 작업중인 디렉토리의 절대 경로를 보여준다. ls : 파일과 디렉토리 구조를 보여준다. ls [option] [directory / file] -a --all : .을 포함한 경로안의 모든 파일을 보여준다. -d -directory : 경로안의 내용을 나영하지 않고 그 내경로의 내용을 보여준다. -h : 파일의 크기를 단위별로 조절하여 보기 쉽게 출력한다. -l : 속성값, i노드값등 자세한 정보 -n : 이름의 나열에서 username 과 groupname 대신 UserID 와 GroupID를 사용한다. -t : 파일 형식을 알리는 문자를 각 파일 뒤에 출력한다. * : 실행 가능한 파일 / : 디렉토리 파일 @ : 심볼릭 링크 = : 소켓 -R : 하위 경로와 그 안에 있는 ..

Study 2008.11.27

Linux Kernel source 분석 기법

Linux Kernel source 분석에 도움이 되는 툴들 ctags vi, vim에서 symbol을 찾을 때 이용된다. $ ctags -R -> 분석할 최상위 폴더에 tags파일 생성 ~./vimrc파일에 아래 내용 추가 set tags=./tags, /usr/src/linuc-2.4/tags, /usr/include/tags ctags를 이용하여 tag 찾기(vi, vim 실행 후) :ta {ident} or + ] :ts {ident} or :tj {ident} -> {ident}가 정의된 위치를 나열하고 점프한다. :po or + t -> stack의 top을 pop하고 그 위치로 점프한다. :sts {ident} :stj {ident} ->{ident}가 정의된 위치를 나열하고 점프, wind..

Study 2008.11.27

Makefile

Makefile 작성법 Macro 구문 규칙 # - > 주석처리 \ -> 여러행 사용시 ${ } 매크로 사용시 : 정의되지 않은 매크로 사용시 null 문자열로 치환 중복된 정의는 최후에 정의된 매크로를 사용한다. NAME = stringA NAME = stringB ${NAME} #string B로 치환 재귀적 확장 매크로 A = $(B) BB B = $(C) CC C = D @echo ${A} #D CC BB 를 출력 단순 확장 매크로 a := $(b) bb b := $(c) cc c := d @echo ${a} #bb를 출력 주의 사항 문자열에 " "를 포함하면 문자열의 일부로 인식 NAME = "string" ${NAME} #string이 아니라 "string"을 의미한다. 매크로 이름 앞에 ta..

Study 2008.11.24

Autotools

Software souce code를 다양한 unix 시스템에 적용시키기 위해 자동으로 설정을 해주는 shell script(configure)를 만들어 내는 일련의 package - autoconf, automake, autoheader... autoconf hello.c 작성 #include int main(){ printf("hello world!\n"); return 0; } Makefile.in 작성 all : hello clean : -rm -rf hello configure.ac 작성 AC_PREREQ(2.57) AC_INIT(hello, 0.0.1, dsct1472@hanmail.net) AC_PROG_CC AC_PROG_CPP .... AC_CONFIG_FILES([Makefile]) A..

Study 2008.11.24

Linux Device Driver

/dev -> 제어. linux/Documentaion/devices.txt (/root/work/bsp/wenders/linux/Documentation/devices.txt) -> 예약된 디바이스 주번호등 확인. $ mknod /dev/bit_test c 240 1 -> char형으로 주번호 부번호 | 주번호자리에 0넣으면 자동으로 넣어줌(배포, 다른컴에 넣을때) $ dmesg -> insmod나 rmmod시 등록됫나 확인. printk -> 꼭 "\n"을 넣어줄것. gcc 2.95.3 -> 안정화 버전 --방화벽 off-- $ vim /etc/selinux/config -> disable로 변경 $ iptables -F ->packet filtering (회사내것만 설정하고 시작) $ service..

Study 2008.11.24

device driver

디바이스 파일 만들기 $ mknod /dev/(장치파일이름) devicetype 주번호 부번호 삭제시, rm -rf /dev/(장치파일이름) 모듈용 Makefile (linux version 2.6) $ vi Makefile obj-m := basicmem.o KDIR := /lib/modules/$(shell uname -r)/build all: make -C $(KDIR) SUBDIRS=$(PWD) modules clean: rm -rf *.o *.ko *.mod *.mod.* I/O 메모리 영역 확인 $ cat /proc/iomem 디바이스 파일 만들기 $ mknod /dev/(장치파일이름) devicetype 주번호 부번호 삭제시, rm -rf /dev/(장치파일이름) 모듈용 Makefile (l..

Study 2008.11.24