Android Study Android Study members 송형주 전형민 박지훈 황세희 이백 전유진 김연찬 전승원 강명훈 임기영 박은병 이덕용 박은병 박주애 이덕용 구자관 윤동렬 김신수 김태연 Study web page Spring note :

Size: px
Start display at page:

Download "Android Study Android Study members 송형주 전형민 박지훈 황세희 이백 전유진 김연찬 전승원 강명훈 임기영 박은병 이덕용 박은병 박주애 이덕용 구자관 윤동렬 김신수 김태연 Study web page Spring note :"

Transcription

1 Init process in Android Created by Andstudy Andstudy Seminar 김연찬

2 Android Study Android Study members 송형주 전형민 박지훈 황세희 이백 전유진 김연찬 전승원 강명훈 임기영 박은병 이덕용 박은병 박주애 이덕용 구자관 윤동렬 김신수 김태연 Study web page Spring note : Android Pub: 이문서는다음의 CCL (creative commons license) 을따름니다. 저작자표시 - 비영리 - 동일조건변경허락 2.0 대한민국

3 Change LOG Change history changes editor 2009년 08월 22일 최초작성 김연찬 2009년 09월 05일 1차교정 (PDF 배포용으로수정 ) 김연찬

4 About Init. Init Process 는 PID 가 1 인프로세스이고부팅과정에서커널이생성하는첫번째프로세스이다. 그럼 Init Process 는언제실행되는가? start_kernel() -> rest_init() -> kernel_thread() -> kernel_init() -> in it_post() 에서 "/init" 을수행 안드로이드소스트리에서 Init process 코드는어디에? /system/core/init/init.c 이문서에서다루는부분의코드는 /system/core/init/ 에서찾아볼수있다. Init.rc 의경우는 /system/core/rootdir/init.rc 에존재한다.

5 Android Init 의기능 SIGCHLD signal 처리 RC 파일 내용처리 Device 초기화 & 관리 Property 설정

6 Init Process (1) Kernal Init post() - 자식프로세스처리를위한 S IGCHLD SIGNAL handler 등록 Init main act.sa_handler = sigchld_handler; sigaction(sigchld, &act, 0); Sigchild handler() Zombi process Make Special purpose Device node files mkdir("/dev", 0755); mkdir("/proc", 0755); mkdir("/sys", 0755); mount("tmpfs", "/dev", "tmpfs", 0, "mode=0755") mkdir("/dev/pts", 0755); mkdir("/dev/socket", 0755); mount("devpts", "/dev/pts", "devpts", xxxxxx 0, NULL); mount("proc", "/proc", "proc", 0, NULL); mount("sysfs", "/sys", "sysfs", 0, NULL); tmpfs /dev Socket pts / /proc /sys Make Special purpose Device node files open_devnull_stdio(); Fd[0] stdin Fd[0] stdin Fd[1] stdout Fd[1] stdout Fd[2] stderr Fd[2] stderr Fd[3] Fd[ ] null Fd[3] Fd[ ] null Make kmsg device file log massage will be written to /dev/ kmsg &set it as FD_CLOEXEC log_init(); mknode( /dev/ kmsg ); Log_fd = open( /dev/ kmsg ); Fcntl(log_fd, F_SETFD, FD_CLOEXEC); Ex) FD_CLOEXEC parent Child Fd[0] Fd[1] Fd[2] Fd[3] Fd[0] Fd[1] Fd[2] Fd[3] stdin stdout stderr a.txt

7 Init Process (2) Init.rc 파일을 Parsing 하여 Service_list 와 Action_list 를구성한다. parse_config_file("/init.rc"); Service_list struct service Listnode slist Char *name Char *classname Int nargs Struct Action onrestart struct service Slist console default 0 onrestart struct service Slist Servicemanager default 0 onrestart Action_list Action_list Action_list Action_list Listnode alist Char *name Struct listnode command Struct command *curtent listnode init Listnode command listnode boot Listnode command Qemu 에서사용하는메모리영역초기화 qemu_init(); QEMU 란? 커널커맨드라인 (/proc/cmdli ne ) 을읽어서필요한내용을전역변수에저장한다 import_kernel_cmdline(0); Argument is 0 : physical H/W Argument is 1 : QEMU emulator 커널로부터 H/W 정보를얻어와서 init.h/w_name.rc 파일을 Parsing 하여 Service_list 와 Action_list 에추가한다. get_hardware_name(); snprintf(tmp, sizeof(tmp),"/init.%s.rc",hardware) parse_config_file(tmp); default h/w configuration is goldfish. ->/system/core/rootdir/etc/init.goldfish.rc Action list 에서 early-init 이라는 name 의노드를 Action_queue 에삽입하고, Action_queue 에있는노드를실행시킨다. action_for_each_trigger("early-init,action_a dd_queue_tail); drain_action_queue(); Init.rc 와 init.goldfish.rc 에 early-init 의 name 의항목이없다. 따라서여기서하는일은없다.

8 Init Process (3) /dev 이하에장치파일을 uevent 파일을이용하여생성하고접근권한을설정한다. device_fd = device_init(); /dev 이하에장치파일을 uevent 파일을이용하여생성하고접근권한을설정한다. Property_area memory map ashmem_create_region(/dev/ ashmem) 을사용하여공유메모리공간을생성한다. property_init(); keychords 확인 Consols 확인 debuggable = property_get("ro.debuggable"); if (debuggable &&!strcmp(debuggable, "1")) keychord_fd = open_keychord(); fd = open(console_name, O_RDWR); if (fd >= 0) have_console = 1; close(fd); 부팅이미지출력 if( load_565rle_image(init_image_file) ) { fd = open("/dev/tty0", O_WRONLY); if (fd >= 0) { const char *msg; msg = "\n ANDROID ; write(fd, msg, strlen(msg)); close(fd); } 로고파일이있으면로고를출력하고, 로고파일이없거나로딩에실패하면 tty0 에 ANDROID 문자열을출력한다. Qemu 설정일때, property 에 'ro.kernel' 이라는접두어를붙여 property 를 set 한다. if (qemu[0]) import_kernel_cmdline(1);

9 Init Process (4) 추가 Property 설정 if (!strcmp(bootmode,"factory")) property_set("ro.factorytest", "1"); else if (!strcmp(bootmode,"factory2")) property_set("ro.factorytest", "2"); else property_set("ro.factorytest", "0"); property_set("ro.serialno", serialno[0]? serialno : ""); property_set("ro.bootmode", bootmode[0]? bootmode : "unknown"); property_set("ro.baseband", baseband[0]? baseband : "u nknown"); property_set("ro.carrier", carrier[0]? carrier : "unknown"); property_set("ro.bootloader", bootloader[0]? bootloader : "unknown"); property_set("ro.hardware", hardware); snprintf(tmp, PROP_VALUE_MAX, "%d", revision); property_set("ro.revision", tmp); Struct Property info name serial value Ro.bootmode Bootmode[0] Ro.hardware goldfish Ro.revision xxxxxxx Action list 에서 init 이라는 name 의노드를 Action_queue 에삽입하고, Action_queue 에있는노드를실행시킨다. create basic FileSystem structure action_for_each_trigger("init,action_add_q ueue_tail); / drain_action_queue(); /dev /proc /sys /sdcard /system /data /cache 기타 property 파일및 /data/property 경로에저장된 persistent property 들을시스템 property 영역에로드한다 시그널처리를위한소켓생성 부팅에필요한 FD 확인 property_set_fd = start_property_service(); if (socketpair(af_unix, SOCK_STREAM, 0, s) == 0) signal_fd = s[0]; signal_recv_fd = s[1]; fcntl(s[0], F_SETFD, FD_CLOEXEC); fcntl(s[0], F_SETFL, O_NONBLOCK); fcntl(s[1], F_SETFD, FD_CLOEXEC); fcntl(s[1], F_SETFL, O_NONBLOCK); } if ((device_fd < 0) (property_set_fd < 0) (signal_recv_fd < 0)) { ERROR("init startup failure\n"); return 1; } default 로생성한이미지의 /data/property 에는 4 개의로케일셋팅정보파일이있다. persist.sys.country persist.sys.language persist.sys.localevar persist.sys.timezone Init 이관리하는 FD

10 Action list 에서 early-boot 와 boot 이라는 name 의노드를 Action_queue 에삽입하고, Action_queue 에있는노드를실행시킨다. action_list 에있는노드중에 node.name 이 "property" 인노드들을 acttion queue 에추가한다. Action_queue 에있는노드를실행시킨다. Init Process (5) action_for_each_trigger("early-boot", action_add_queue_tail); action_for_each_trigger("boot", action_add_queue_tail); drain_action_queue(); queue_all_property_triggers(); drain_action_queue(); - network init - System Server and daemons 의 Permissions 설정 - 각 APP group 메모리사용설정 Action_list Action_list Listnode alist Char *name Struct listnode command Struct command *curtent Action_list listnode property Listnode command init 프로세스가 poll 함수로감시할파일디스크립터설정 ufds[0].fd = device_fd; ufds[0].events = POLLIN; ufds[1].fd = property_set_fd; ufds[1].events = POLLIN; ufds[2].fd = signal_recv_fd; ufds[2].events = POLLIN; ufds[3].fd = keychord_fd; ufds[3].events = POLLIN; Init Ufds[ ] [0] fd=device_fd event = POLLIN [1] fd=property_set_fd event = POLLIN [2] fd=signal_recv_fd event = POLLIN [3] fd=keychord_fd event = POLLIN 무한루프문에서 action queue 에실행할 action 이있으면실행하고재시작이필요한프로세스가있으면재시작해준다. ufds 를감시하고 POLLIN 이발생하면해당핸들러를통해처리한다. 해당 fd 의 POLLIN 에따라 4 가지핸들러를호출한다. For(;;;) drain_action_queue(); restart_processes(); while (!wait_for_one_process(0)) handle_device_fd(device_fd); handle_property_set_fd(property_set_fd); handle_keychord(keychord_fd);

11 Init.c 분석 (1) Init 이사용할자료구조선언 File descriptor, Signal 구조체, Polling 을위한구조체등 int device_fd = -1; struct sigaction act; struct pollfd ufds[4]; SIGCHLD Handler 등록 자식프로세스처리를위한 SIGCHLD SIGNAL handler 등록 디렉토리를생성및마운트 /dev, /proc, /sys 디렉토리를각각생성 tmpfs, devpts, proc, sysfs 마운트 open_devnull_stdio(); stdin, stdout, stderr File descriptor 를문자디바이스파일 /dev/ null 의 FD 로연결한다. log_init(); /dev/ kmsg 디바이스파일을생성하고, 파일디스크립터 를 log_fd 에저장 INFO("reading config file\n"); /dev/ kmsg 에 log 내용을기록

12 SIGCHILD Signal SIGCHILD SIGNAL - 자식프로세스가멈추거나종료하거나추적당하는경우부모프로세스가받는시그널 Init process 는왜 SIGCHILD 시그널을사용할까? - 리눅스에서자식프로세스보다부모프로세스가먼저죽는다면, 자식프로세스의부모를 init process로만들어준다. 그래서고아프로세스가죽을때처리해야하는일을 init process 가대신하게된다. 따라서 init process 는 SIGCHILD Signal 를처리해야만한다. - init process 의자식프로세스중에프로세스가종료하고재시작해야하는프로세스가있다면, 재시작관련설정을해줘야한다. (ex. Restart 옵션으로시작된 Service) SA_NOCLDSTOP flag: 만약 SIGCHLD 의시그널핸들러일경우자식프로세스의상태가 stop 일경우는 SIGCHLD 시그널이발생안됨.

13 디렉토리를생성및마운트 / /dev [tmpfs] /proc [proc] /SYS [sysfs] /pts /socket [devpts] File System 설명 Tmpfs tmpfs 는램파일시스템의일종 ( 주로성능향상목적 ) Devpts Proc Sysfs devpts 는가상터미널을위한파일시스템 Proc fs 는커널메모리에서돌아가는일종의가상파일시스템 sysfs 파일시스템은 proc, devfs, devpts 파일시스템을하나로통합한파일시스템 (Linux Kernel 2.6 에서도입 )

14 open_devnull_stdio() static const char *name = "/dev/ null "; if (mknod(name, S_IFCHR 0600, (1 << 8) 3) == 0) { fd = open(name, O_RDWR); unlink(name); if (fd >= 0) { dup2(fd, 0); dup2(fd, 1); dup2(fd, 2); if (fd > 2) { close(fd); } 주번호 1 부번호 3 이후로는 stdio 가 null dev 로설정되어 init process 가어떠한메시지를 stdio 로보내더라도 null dev 로전달되어 stdio 불가능해진다. Fd[0] stdin Fd[0] stdin Fd[1] Fd[2] Fd[3] Fd[ ] stdout stderr null Fd[1] Fd[2] Fd[3] Fd[ ] stdout stderr null

15 log_init() void log_init(void) static const char *name = "/dev/ kmsg "; if (mknod(name, S_IFCHR 0600, (1 << 8) 11) == 0) { 주번호 1 부번호 11 log_fd = open(name, O_WRONLY); fcntl(log_fd, F_SETFD, FD_CLOEXEC); unlink(name); /dev/ kmsg 디바이스파일을생성하고, 파일디스크립터를 log_fd에저장 FD_CLOEXEC close-on-exec Init 에서 close-onexec 의의미 fd 의 close-on-exec 플래그를 arg 의 FD_CLOEXEC 비트에의해지정된값으로설정한다. 보통프로세스에서 exec 를시켜서새로운프로세스를실행시키면새로운프로세스는기존의프로세스의이미지를덮어쓰게된다. 그러면서기존프로세스가열었던파일지정자를그대로넘겨주게된다. 그러나기존프로세스가열었던파일디스크립터의 closeon-exec 가 set 됐을경우해당파일은새로운프로세스로는상속이되지않는다. /dev/ kmsg 는 init 이 unlink 를했기때문에파일의데이터는남아있지만접근할이름이없어졌다. 그리고 close-on-exec 를 set 함으로써 fork 를통해서도파일디스크립터는상속이되지않는다. 따라서 /dev/ kmsg 는 Init process 만접근가능하다.

16 close-on-exec flag close-on-exec = unset close-on-exec = SET Parent 가 a.txt 를 open() 후에 Fork() 를이용하여 child 를생성할때 fd 값의차이. parent Fd[0] Fd[1] Fd[2] stdin stdout stderr parent Fd[0] Fd[1] Fd[2] stdin stdout stderr Fd[3] a.txt Fd[3] a.txt Child Fd[0] Fd[1] Fd[2] Fd[3] Child Fd[0] Fd[1] Fd[2] Fd[3]

17 Init.c 분석 (2) parse_config_file("/init.rc"); init.rc 파일을파싱해서각 action, service 섹션별로연 결리스트를생성한다 qemu_init(); 안드로이드의에뮬레이터로사용되는 QEMU 와관련된 접근권한관련변수초기화 import_kernel_cmdline(0); 커널커맨드라인을읽어서필요한내용을전역변수에 저장한다. get_hardware_name(); 커널로부터 CPU 정보를읽어와 hardware 와 revision 정 보를저장 parse_config_file(tmp); hardware 에해당하는 init.rc 파일을추가적으로파싱 snprintf(tmp, sizeof(tmp), "/init.%s.rc", hardware);

18 parse_config_file("/init.rc ) INIT.RC 내용 (/system/core/rootdir/init.rc) Init.rc 파일을 Parsing 하여 Service_list 와 Action_list를구성한다. RC file? [runtime configuration files] runtime시에환경설정을할수있도록설정내용을정의한파일 on init [ 환경설정 ] on boot [boot action 정의 ] class_start default [ 서비스시작 ] - 글로벌변수초기화 - mount point 생성 /sdcard, /system, /data, /cache -MTD 파티션마운드 ( 기본적으로 yaffs2 사용 ) - create basic filesystem structure - network init - System Server and daemons 의 Permissions 설정 - 각 APP group 메모리사용설정 - service 정의형식 - service <name> <pathname> [ <argument> ]* <option> <option> Service_list struct service struct service struct service Listnode slist Char *name Char *classname Int nargs Stuct Action onrestart Slist console default 0 onrestart Slist Servicemanager default 0 onrestart Action_list Action_list Action_list Action_list Listnode alist Char *name Struct listnode command Struct command *curtent listnode init Listnode command CMD listnode boot Listnode command CMD CMD CMD CMD CMD

19 APP group APP group & 메모리설정 ADJ value Define the mem ory thresholds [4k pages ] FOREGROUND_APP [6M] 전면에있는프로그램 VISIBLE_APP [8M] 화면에보이지만실행되지않는 APP SECONDARY_SERVER [16M] Service Demon HOME_APP [16M] 시작화면에등록되는 APP HIDDEN_APP_MIN [20M] 최소화시킨 APP CONTENT_PROVIDER [22M] CONTENT_PROVIDER EMPTY_APP [24M] About ADJ Value? - Define the oom_adj values for the classes of processes that can be killed by the kernel - OOM Killer 가동작해야할때계산되는 score 값에영향을미치는값 - 숫자가높을수록 OOM killer 에의해죽을가능성이높다. - OOM_killer 에절대죽지않는 ADJ value 는 -17 이다. (ex init process)

20 Service Start [service 정의형식 ] service <name> <pathname> [ <argument> ]* <option> <option> [code] service servicemanager /system/bin/servicemanager user system critical onrestart restart zygote onrestart restart media - servicemanager 는 /system/bin/servicemanager 경로에존재 - critcal 옵션 [ 4 분안에 4 번의오류가발생한다면 reboot 하겠다는안드로이드의시스템운영정책 ] - onrestart 옵션 -> servicemanager 가재시작되면 zygoto & media 도재시작해라라는의미 -ini.rc 에서시작하는서비스리스트 Console adbd vold servicemanager ril-daemon zygote media bootsound dbus hcid hfag hsag installd flash_recovery Init.rc 에대한보다많은정보는 /system/core/init/readme.txt 문서참조

21 qemu_init() Func 기능 : qemu_perms 영역을 memset() 을이용하여초기화한다. What is QEMU & Goldfish? Google 은 app 개발자를위해 SDK 배포시 emulator 를포함시켰고, 이 emulator 에서동작하도록하기위한가상의 device configuration 을 goldfish 라합니다. 그리고이 emulator 를 QEMU 라합니다. ARM core Simulator QEMU Goldfish Hardware Simulator Applications APP Framework Android Run- Time Libraries Linux Kernel Emulator or Hardware Network

22 import_kernel_cmdline(0) 커널커맨드라인 (/proc/cmdline ) 을읽어서필요한내용을전역변수에저장한다 0 을인자로넘길경우는실제타겟을위한몇몇커맨드라인의내용이 init 프로세스의전역변수에저장 1 을인자로넘길경우는 QEMU 에뮬레이터를위해모든커맨드라인의내용을 "ro.kernel" 접두어를붙여서 property 값을 set한다.(unix domain socket 이용 )

23 Init.H/W_name.rc 파싱 커널 (proc 파일시스템 ) 로부터 CPU 정보를읽어와 hardware 와 revision 정보를전역변수에저장하고이를이용하여 hardware 관련 rc 파일을추가적으로파싱한다. 현재는 default 로 hardware 가 goldfish 로되어있기때문에 init.goldfish.rc 파일이파싱된다. " /system/core/rootdir/etc/init.goldfish.rc [code] get_hardware_name(); snprintf(tmp, sizeof(tmp), "/init.%s.rc", hardware); parse_config_file(tmp); Init.rc 파일을파싱해서만들어놓은 Service_list 와 Action_list 에해당항목이있다면추가한다. Service_list struct service struct service struct service Listnode slist Char *name Char *classname Int nargs Steuct Action onrestart Slist console default 0 onrestart Slist Servicemanager default 0 onrestart Action_list Action_list Action_list Action_list Action_list Listnode alist Char *name Struct listnode command Struct command *curtent listnode init Listnode command listnode boot Listnode command CMD CMD listnode xxx Listnode command CMD CMD CMD CMD CMD CMD CMD CMD

24 Init 분석 (2,3) action_for_each_trigger("early-in it,action_add_queue_tail); action 리스트에서 name 이 early-init 인노드를 ACTION queue 에추 가한다. ACTION queue 에저장된커맨드를순차적으로실행한다. drain_action_queue(); device_fd = device_init(); uevent 파일들에 'add' 명령을 write 해서디바이스추가이벤트를발생 시키고이렇게발생된이벤트는 uevent 소켓을통해수신해서파싱 uevent 메시지를수신하기위해사용한소켓을리턴함. system property 영역을생성하고, default property 들을저장함 property_init();

25 Action_queue 에실행할노드추가 & 실행 action_for_each_trigger("early-init,action_add_queue_tail) action 리스트에서 name 이 early-init 인노드를 ACTION queue 에추가한다. Action-list 에 name= early-init 인노드가없기때문에아무일도하지않는다. (init.rc 와 init.goldfish.rc 에 early-init 항목이없다 ) init 프로세스에서는다음과같은 4 개의 boot action 을정의할수있다. early-init init early-boot, Boot 정의된 action 없음 create basic filesystem structure 정의된 action 없음 System Server and daemons 의 Permissions 설정 early-init, early-boot, 추후시스템의확장을고려해서설계한것이라추측된다. drain_action_queue() action queue 에있는내용 ( 커맨드 ) 를실행한다. early-init 에서추가한내용이없을것이므로여기서실행되는내용도없을것이다.

26 device_init() uevent 메시지용소켓오픈하고 3 번의 coldboot() 함수를호출한다. [code] Fd = open_uevent_socket(); coldboot(fd, "/sys/class"); coldboot(fd, "/sys/block"); coldboot(fd, "/sys/devices"); cold boot 는무슨일을하나? /dev/ 이하파일들을 init 프로세스에서생성하는데, 어떠한디바이스들이있는지를확인하기위해서 netlink socket (device_fd) 를생성하고, 디바이스드라이버와 uevent 메세지를주고받는다. 과정은디렉토리 "/sys/class", "/sys/block", "/sys/devices" 를각각검색하여, uevent 파일을열어서 "add" 를 write 한후, 응답하는 uevent 메세지를수신하고, 해당디바이스의노드생성및접근권한을설정한다. 수신된 uevent 구조체의 subsysem 과 path 필드의정보를참조하여 /dev 디렉토리이하의장치관련서브디렉토리및장치파일을생성혹은삭제하고접근권한을설정한다. event 가 firmware subsystem 관련이고, uevent->acttion 이 'ADD' 이면 fork() 를통해새로운프로세스를만들고 irmware 관련 uevent 는새로운자식프로세스에서처리한다. (process_firmware_event(uevent);)

27 uevent - LDM(Linux Device Model) 에서는커널이벤트를사용자공간으로전달하기위한인터페이스를제공하고있다. 이것이바로 uevent 다. - uevent 는커널에서유저프로세스에게디바이스관련메시지를전달하는 netlink socket 의한종류이다. netlink socket? netlink socket 은커널과유저영역사이의통신 (IPC) 방법이다 < 커널 > < ( netlink socket ) > < 유저프로세스 > netlink socket 장점 -netlink 의경우는커널모듈로추가가능. - 다른 IPC 에반해, netlink 는여러프로세스그룹으로멀티캐스트전송이가능 - 시스템콜과 ioctl 의경우, 유저애플리케이션에의해시작가능, 이에반해 netlink 는커널에의해서시작가능

28 Unix domain socket Unix Domain 소켓은같이동일 PC 내의프로세스끼리통신을하기위해서사용 파일명을가지고바인딩 Unix domain socket socket 네트워크프로그래밍에서네트워크로연결된서로다른 PC 간의통신을위해사용 ip 주소와포트로바인딩 sock = socket( PF_FILE, SOCK_DGRAM, 0); sock = socket( PF_INET, SOCK_DGRAM, 0); Unix domain 사용예 struct sockaddr_un server_addr; memset( &server_addr, 0, sizeof( server_addr)); server_addr.sun_family = AF_UNIX; strcpy( server_addr.sun_path, "/tmp/test_server.dat");

29 property_init() ashmem_create_region(/dev/ashmem) 을사용하여공유메모리공간을생성한다. (anonymous shared memory)

30 Init 분석 (3,4) keychords 확인 Keychord open 조건을확인하고참인조건이면 open keychord_fd = open_keychord(); Consols 확인 console 을 open 해서동작유무를체크한다. 정상동작을한다면 have_console = 1 로셋팅 부팅이미지출력 565rle image( 로고 ) 파일을프레임버퍼에로딩한다. image 파일이없으면텍스트모드로프레임버퍼에 ANDORID 출력 QEMU 설정에따라 CMDLINE 변경 if (qemu[0]) import_kernel_cmdline(1); 커널커맨드라인의옵션들을 QEMU 에서참조하게끔 'ro.kernel' 이라는접두어 를붙여 property 를생성한다. 추가 Property 설정 각커널커맨드에대한중요옵션들을 property 로만든다. Factory mode, ro.bootmode, ro.baseband 등등

31 Keychord 란? open_keychord(), Consols 확인 Keychord 는핸드폰에있는단축키와조합키와같은특수키와조합키를지원하기위한구조이다. [code] debuggable = property_get("ro.debuggable"); if (debuggable &&!strcmp(debuggable, "1")) keychord_fd = open_keychord(); debuggable 셋팅값에따라 keychord 를오픈한다. Consols 동작확인 [code] fd = open(console_name, O_RDWR); if (fd >= 0) have_console = 1; close(fd); Consols 동작확인을하고 have_console 변수를셋한다.

32 부팅이미지출력 565rle image( 로고 ) 파일을프레임버퍼에로딩한다. [code] if( load_565rle_image(init_image_file) ) { fd = open("/dev/tty0", O_WRONLY); if (fd >= 0) { const char *msg; msg = "\n" "\n A N D R O I D "; write(fd, msg, strlen(msg)); close(fd); } -/initlogo.rle 파일이있다면이미지를로딩하여 LCD 에출력한다. -/initlogo.rle 파일이없거나, image file 로딩이실패하면 -1 을리턴하고 tty0 에텍스트 ( A N D R O I D ) 를출력한다. - 로고이미지는 565rle format 이다.

33 QEMU 설정에따라 CMDLINE 변경 Qemu 환경이라면이에맞는셋팅을해준다. [code] if (qemu[0]) import_kernel_cmdline(1); import_kernel_cmdline(1) 인자가 1 이면 qemu 관련환경이고, 내부에서 property_set() 을하게된다. Property 는 'ro.kernel' 이라는접두어를붙여 property 를생성한다 Property 관련함수 property_init() property_get() /property_set() start_property_service() property service(handle_property _set_fd()) Property_area 로사용할공유메모리공간을생성한다 property_service() 를시작해야하는서비스내용을소켓을이용하여시스템에알린다. 위에서써진소켓내용을통해서비스를시작한다.

34 추가 Property 설정 각커널커맨드에대한중요옵션들을 property 로만든다. [code] if (!strcmp(bootmode,"factory")) property_set("ro.factorytest", "1"); else if (!strcmp(bootmode,"factory2")) property_set("ro.factorytest", "2"); else property_set("ro.factorytest", "0"); property_set("ro.serialno", serialno[0]? serialno : ""); property_set("ro.bootmode", bootmode[0]? bootmode : "unknown"); property_set("ro.baseband", baseband[0]? baseband : "unknown"); property_set("ro.carrier", carrier[0]? carrier : "unknown"); property_set("ro.bootloader", bootloader[0]? bootloader : "unknown"); property_set("ro.hardware", hardware); snprintf(tmp, PROP_VALUE_MAX, "%d", revision); property_set("ro.revision", tmp); Property_area 에 property_info 구조체의형태로 Property_area 를채운다. Struct Property info name serial value ro.factorytest 1 Ro.hardware goldfish Ro.revision xxxxxxx

35 Init 분석 ( 4 ) action_for_each_trigger("init,action_add_queue_tail); 전체 action list 에서 'init' 에해당하는 action 에관계되는커맨드내용을뽑아내 ACTION queue 에저장 drain_action_queue(); ACTION queue 에저장된커맨드를순차적으로실행한다. property_set_fd = start_pro perty_service(); 기타 property 파일및 /data/property 디렉토리에저장된 persistent property 들을시스템 property 영역에로드한다. 그리고 property service를위한서버용 unix domain socket을생성하고, 리턴한다. 시그널처리를위한소켓생 성 sockpair 시스템콜을이용해서로연결된 unix domain socket 쌍을생성한다 부팅에필요한 FD 확인 device_fd, property_set_fd, signal_recv_fd 값이모두 0 보다커야한다. 그외의경우는 ERROR() 호출후 return 1

36 Init action 실행 -Action 리스트에서 name 이 init 인노드를 ACTION queue 에추가한다. - 추가한 action queue 에있는노드를실행시킨다. [code] action_for_each_trigger("init", action_add_queue_tail); drain_action_queue(); Init.rc. on init 섹션에서정의한 Action 이시작되는시점이고, 다음과같은내용의명령어를수행한다. - 글로벌변수초기화 - mount point 생성 /sdcard, /system, /data, /cashe - MTD 파티션마운드 ( 기본적으로 yaffs2 사용 ) - create basic filesystem structure basic filesystem structure / /dev /proc /sys /sdcard /system /data /cashe

37 start_property_service() property_set_fd = start_property_service(); - 기타 property 파일및 /data/property 디렉토리에저장된 persistent property 들을시스템 property 영역에로드한다. - property service 를위한서버용 unix domain socket 을생성하고, 리턴한다. - 이후에 property 를변경할경우여기서생성한 unix domain socket 을이용한다. /data/property/file 은안드로이드의로케일설정파일이있다. persist.sys.country persist.sys.language persist.sys.localevar persist.sys.timezone start_property_service() 함수에서참조하는 property fils list /system/build.prop /system/default.prop /data/local.prop

38 시그널처리를위한소켓생성 서로연결된 unix domain socket 쌍을생성한다. S[0], S[1] [code] if (socketpair(af_unix, SOCK_STREAM, 0, s) == 0) { signal_fd = s[0]; signal_recv_fd = s[1]; fcntl(s[0], F_SETFD, FD_CLOEXEC); fcntl(s[0], F_SETFL, O_NONBLOCK); fcntl(s[1], F_SETFD, FD_CLOEXEC); fcntl(s[1], F_SETFL, O_NONBLOCK); } - sockpair 시스템콜은서로연결된 unix domain socket 쌍을생성한다. 생성된소켓쌍은서로직접연결되어있어바인딩이필요없으며. 4 번째인자에저장된다. S[] 는 init 이 SIGCHLD 시그널핸들러에서발생한시그널번호를수신하는소켓이다.

39 부팅에필요한 FD 확인 device_fd, property_set_fd, signal_recv_fd 가정상적이어야만부팅이진행된다. if ((device_fd < 0) (property_set_fd < 0) (signal_recv_fd < 0)) { ERROR("init startup failure\n"); return 1; } ERROR() 함수는 kmsg 에 Level =3 으로로그를남기는함수이다. Init 이관리하는 FD Init Fd[0] Fd[1] Fd[2] Fd[x] Fd[x] Fd[x] Fd[x] Fd[x] Fd[ ] stdin stdout stderr null kmsg Uevent Socket Unix domain Socket Unix domain Socket /dev/keychord device_fd Property_set_fd Signal_recv_fd keychord_fd

40 Init 분석 ( 5 ) early-boot' 와 'boot' action 에 관계되는커맨드실행 action_for_each_trigger("early-boot", action_add_queue_tail); action_for_each_trigger("boot", action_add_queue_tail); drain_action_queue(); queue_all_property_triggers(); drain_action_queue(); 아직까지셋팅되지않은 property 를 queue 에추가하고실행한다. init 프로세스가 poll 함수로감 시할파일디스크립터설정 ufds[0] : uevent 메시지체크 ufds[1] : property set관련 Unix Domain 소켓메시지체크 ufds[2] : SIGCHLD 시그널발생체크 ufds[3] : keychord 발생체크 무한루프문 ufds 에서정의한파일디스크립터들의입력을감시한다 4 개의 FD 에서 POLLIN 이뜨면해당이벤트처리를한다.

41 action_for_each_trigger( boot,action_add_queue_tail) Action list 에서 name 이 'early-boot' 와 'boot 인커맨드내용을뽑아내 ACTION queue 에추가한후, 각커맨드를실행한다 [code] action_for_each_trigger("early-boot", action_add_queue_tail); action_for_each_trigger("boot", action_add_queue_tail); drain_action_queue(); queue_all_property_triggers(); drain_action_queue(); Init.rc. 내용에서보았듯이 early-boot 의내용은없었기때문에이부분은실행되는것이없을것이다. Boot 섹션은다음과같은일을한다. - network init - System Server and daemons 의 Permissions 설정 - 각 APP group 메모리사용설정 queue_all_property_triggers() 함수에서아직까지셋팅되지않은 property 를 queue 에추가하고실행한다.

42 Ufds[ ] 파일디스크립터설정 init 프로세스가 poll 함수 (I/O multiplexing) 로감시할파일디스크립터설정 [code] ufds[0].fd = device_fd; ufds[1].fd = property_set_fd; ufds[2].fd = signal_recv_fd; fd_count = 3; ufds[3].fd = keychord_fd; fd_count++; ufds[0].events = POLLIN; ufds[1].events = POLLIN; ufds[2].events = POLLIN; ufds[3].events = POLLIN; ufds[0] : uevent 메시지체크 ufds[1] : property set 관련 Unix Domain 소켓메시지체크 ufds[2] : SIGCHLD 시그널발생체크 ufds[3] : keychord 발생체크 Init Ufds[ ] [0] fd=device_fd event = POLLIN [1] fd=property_set_fd event = POLLIN [2] fd=signal_recv_fd event = POLLIN [3] fd=keychord_fd event = POLLIN

43 무한루프문 Loop 를돌면서 action queue 에처리해야하는 action 이있다면실행하고, restart 해야하는 prosess 가있으면재시작해준다. Poll() 함수를이용하여 ufds 에서정의한파일디스크립터들의입력을감시한다 [code] for (i = 0; i < fd_count; i++) ufds[i].revents = 0; drain_action_queue(); restart_processes(); nr = poll(ufds, fd_count, timeout); if (nr <= 0) continue; if (ufds[2].revents == POLLIN) { read(signal_recv_fd, tmp, sizeof(tmp)); while (!wait_for_one_process(0)) ; continue; } if (ufds[0].revents == POLLIN) handle_device_fd(device_fd); if (ufds[1].revents == POLLIN) handle_property_set_fd(property_set_fd); if (ufds[3].revents == POLLIN) handle_keychord(keychord_fd);

44 drain_action_queue(); restart_processes(); nr = poll( ufds); ufds[0] yes Nr > 0 no yes 마름모안에텍스트는 ufds[x].revents == POLLIN? 대신 dfds[x] 로표현 wait_for_one_process(0) ufds[1] no yes handle_device_fd(device_fd) ufds[2] no yes handle_property_set_fd(property_set_fd) ufds[3] no yes handle_keychord(keychord_fd);

45 wait_for_one_process(0) Ufds[ ] handle action SIGCHID 시그널에발생했다는것은 child process 가종료했다는것을의미한다. 따라서이함수에서는 process 종료시에 parent 가처리해야하는내용이있다. Wait() 하고, 종료된 process 속성값에따라재시작해줘야하는지확인하고옵션에따라기능을수행한다. handle_device_fd(device_fd) Device_fd에 Uevent가발생한것은디바이스드라이버에서핫플러그등의디바이스관련한이벤트가발생할경우이다. 따라서 init procrss 는이런디바이스메시지를처리해야한다. 이루틴은앞서서 devicd_init() 에서이미호출된적이있다. - uevent는커널에서유저프로세스에게디바이스관련메시지를전달하는 netlink socket의한종류이다. handle_property_set_fd(property_set_fd); Property 가변경되어야할때, 소켓을통해전달된정보를바탕으로권한체크를하고, 문제가없다면 property_set() 을한다. handle_keychord(keychord_fd); Keychord 정보를읽고나서, 읽어온 keychord 에매칭되는서비스가있으면실행한다.

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.

More information

좀비프로세스 2

좀비프로세스 2 Signal & Inter-Process Communication Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 좀비프로세스 2 좀비프로세스 (zombie process) 좀비프로세스란프로세스종료후메모리상에서사라지지않는프로세스 좀비프로세스의생성이유. 자식프로세스는부모프로세스에게실행결과에대한값을반환해야한다.

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

/chroot/lib/ /chroot/etc/

/chroot/lib/ /chroot/etc/ 구축 환경 VirtualBox - Fedora 15 (kernel : 2.6.40.4-5.fc15.i686.PAE) 작동 원리 chroot유저 ssh 접속 -> 접속유저의 홈디렉토리 밑.ssh의 rc 파일 실행 -> daemonstart실행 -> daemon 작동 -> 접속 유저만의 Jail 디렉토리 생성 -> 접속 유저의.bashrc 의 chroot 명령어

More information

10.

10. 10. 10.1 10.2 Library Routine: void perror (char* str) perror( ) str Error 0 10.3 10.3 int fd; /* */ fd = open (filename, ) /*, */ if (fd = = -1) { /* */ } fcnt1 (fd, ); /* */ read (fd, ); /* */ write

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용

More information

슬라이드 1

슬라이드 1 / 유닉스시스템개요 / 파일 / 프로세스 01 File Descriptor file file descriptor file type unix 에서의파일은단지바이트들의나열임 operating system 은파일에어떤포맷도부과하지않음 파일의내용은바이트단위로주소를줄수있음 file descriptor 는 0 이나양수임 file 은 open 이나 creat 로 file

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 4 장파일 컴퓨터과학과박환수 1 2 4.1 시스템호출 컴퓨터시스템구조 유닉스커널 (kernel) 하드웨어를운영관리하여다음과같은서비스를제공 파일관리 (File management) 프로세스관리 (Process management) 메모리관리 (Memory management) 통신관리 (Communication management) 주변장치관리 (Device

More information

ABC 11장

ABC 11장 12 장고급응용 0 수행중인프로그램 프로세스 모든프로세스는유일한프로세스식별번호 (PID) 를가짐 유닉스에서는 ps 명령을사용하여프로세스목록을볼수있음 12-1 프로세스 $ ps -aux USER PID %CPU %MEM SZ RSS TT STAT START TIME COMMAND blufox 17725 34.0 1.6 146 105 i2 R 15:13 0:00

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 소켓 2 1 소켓 클라이언트 - 서버모델 네트워크응용프로그램 클리이언트 - 서버모델을기반으로동작한다. 클라이언트 - 서버모델 하나의서버프로세스와여러개의클라이언트로구성된다. 서버는어떤자원을관리하고클라이언트를위해자원관련서비스를제공한다. 3 소켓의종류 소켓 네트워크에대한사용자수준의인터페이스를제공 소켓은양방향통신방법으로클라이언트 - 서버모델을기반으로프로세스사이의통신에매우적합하다.

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

Microsoft PowerPoint - ch09_파이프 [호환 모드]

Microsoft PowerPoint - ch09_파이프 [호환 모드] 학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 파이프 IT CookBook, 유닉스시스템프로그래밍 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 파이프 IT CookBook, 유닉스시스템프로그래밍 학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 3/20 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 BOOTLOADER Jo, Heeseung 부트로더컴파일 부트로더소스복사및압축해제 부트로더소스는웹페이지에서다운로드 /working 디렉터리로이동한후, wget으로다운로드 이후작업은모두 /working 디렉터리에서진행 root@ubuntu:# cp /media/sm5-linux-111031/source/platform/uboot-s4210.tar.bz2 /working

More information

1장. 유닉스 시스템 프로그래밍 개요

1장.  유닉스 시스템 프로그래밍 개요 Unix 프로그래밍및실습 7 장. 시그널 - 과제보충 응용과제 1 부모프로세스는반복해서메뉴를출력하고사용자로부터주문을받아자식프로세스에게주문내용을알린다. (SIGUSR1) ( 일단주문을받으면음식이완료되기전까지 SIGUSR1 을제외한다른시그널은모두무시 ) timer 자식프로세스는주문을받으면조리를시작한다. ( 일단조리를시작하면음식이완성되기전까지 SIGALARM 을제외한다른시그널은모두무시

More information

슬라이드 1

슬라이드 1 / 임베디드시스템개요 / 임베디드운영체제 / 디바이스드라이버 01 Linux System Architecture Application Area Application System Call Interface BSD Socket Virtual File System INET(AF_INET) Kernel Area Buffer Cache Network Subsystem

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓 제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결 UDP 소켓의특징 UDP 소켓의특성 싞뢰할수없는데이터젂송방식 목적지에정확하게젂송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

untitled

untitled Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II

More information

리눅스 프로세스 관리

리눅스 프로세스 관리 프로세스 (Process) Process 프로그램이나명령어를실행하면메모리에적재되어실제로실행되고있는상태를의미 이러한프로세스들은프로세스가시작하면서할당받는프로세스식별번호인 PID(Process ID), 해당프로세스를실행한부모프로세스를나타내는 PPID(Parent Process ID), UID 와 GID 정보를통해해당프로세스가어느사용자에속해있는지, 프로세스가파일에대해갖는권한및프로세스가실행된터미널,

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070> #include "stdafx.h" #include "Huffman.h" 1 /* 비트의부분을뽑아내는함수 */ unsigned HF::bits(unsigned x, int k, int j) return (x >> k) & ~(~0

More information

제12장 파일 입출력

제12장 파일 입출력 제 4 장파일입출력 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 1 시스템호출 (system call) 파일 (file) 임의접근 (random access) 주요학습내용 2 4.1 절 커널의역할 (kernel) 커널 (kernel) 은운영체제의핵심부분으로서, 하드웨어를운영관리하는여러가지서비스를제공함 파일관리 (File management) 디스크 프로세스관리

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 시스템호출개요 리눅스에서는사용자공간과커널공간을구분 사용자프로그램은사용자모드, 운영체제는커널모드에서수행 커널공간에대한접근은커널 ( 특권, priviledged) 모드에서가능 컴퓨팅자원 (CPU, memory, I/O 등 ) 을안전하게보호 커널수행을안전하게유지

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

Mango220 Android How to compile and Transfer image to Target

Mango220 Android How to compile and Transfer image to Target Mango220 Android How to compile and Transfer image to Target http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode] Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)

More information

Microsoft PowerPoint - 09-Pipe

Microsoft PowerPoint - 09-Pipe 9. 파이프 상명대학교소프트웨어학부 파이프 시그널은이상한사건이나오류를처리하는데는이용하지만, 한프로세스로부터다른프로세스로대량의정보를전송하는데는부적합하다. 파이프 한프로세스를다른관련된프로세스에연결시켜주는단방향의통신채널 2 pipe() Usage #include int pipe(int filedes[2]); 3 < ex_1.c > #include

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)

More information

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode] TCP Server/Client Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 TCP Server Program Procedure TCP Server socket() bind() 소켓생성 소켓번호와소켓주소의결합 listen() accept() read() 서비스처리, write()

More information

Microsoft PowerPoint APUE(File InO).pptx

Microsoft PowerPoint APUE(File InO).pptx Linux/UNIX Programming 문양세강원대학교 IT대학컴퓨터과학전공 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 What is a File? A file is a contiguous

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 1 목포해양대해양컴퓨터공학과 UDP 소켓 네트워크프로그램설계 4 장 2 목포해양대해양컴퓨터공학과 목차 제 4장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송신및수신 4.4 UDP 소켓의연결 3 목포해양대해양컴퓨터공학과 UDP 소켓의특징 UDP 소켓의특성 신뢰할수없는데이터전송방식 목적지에정확하게전송된다는보장이없음.

More information

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase startup-config Erasing the nvram filesystem will remove all configuration files Continue? [confirm] ( 엔터 ) [OK] Erase

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버

More information

Chap06(Interprocess Communication).PDF

Chap06(Interprocess Communication).PDF Interprocess Communication 2002 2 Hyun-Ju Park Introduction (interprocess communication; IPC) IPC data transfer sharing data event notification resource sharing process control Interprocess Communication

More information

API 매뉴얼

API 매뉴얼 PCI-TC03 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

Microsoft Word - Network Programming_NewVersion_01_.docx

Microsoft Word - Network Programming_NewVersion_01_.docx 10. Unix Domain Socket 105/113 10. Unix Domain Socket 본절에서는 Unix Domain Socket(UDS) 에대한개념과이에대한실습을수행하고, 이와동시에비신뢰적인통신시스템의문제점에대해서분석하도록한다. 이번실습의목표는다음과같다. 1. Unix Domain Socket의사용법을익히고, IPC에대해서실습 2. TCP/IP의응용계층과전달계층의동작을구현및실습

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기 Mango-IMX6Q mfgtool 을 이용한이미지 Write 하기 http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys CRZ Technology 1 Document

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

PCServerMgmt7

PCServerMgmt7 Web Windows NT/2000 Server DP&NM Lab 1 Contents 2 Windows NT Service Provider Management Application Web UI 3 . PC,, Client/Server Network 4 (1),,, PC Mainframe PC Backbone Server TCP/IP DCS PLC Network

More information

Adobe Flash 취약점 분석 (CVE-2012-0754)

Adobe Flash 취약점 분석 (CVE-2012-0754) 기술문서 14. 08. 13. 작성 GNU C library dynamic linker $ORIGIN expansion Vulnerability Author : E-Mail : 윤지환 131ackcon@gmail.com Abstract 2010 년 Tavis Ormandy 에 의해 발견된 취약점으로써 정확한 명칭은 GNU C library dynamic linker

More information

Mango-AM335x LCD Type 커널 Module Parameter에서 변경하기

Mango-AM335x LCD Type 커널 Module Parameter에서 변경하기 Mango-AM335x LCD Type 커널 Module Parameter 에서 변경하기 http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys CRZ Technology

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 과제간단해설및소개 정우영조교 최종업데이트 : 2013-12-14 들어가며 이거자체는 1 번과제끝나고부터만들기시작했는데어쩌다보니배포는이제와서야 ㅜㅜ 대략적인문제만집었습니다. 프기실 에해당하는문제는가능한집지않으려합니다. 앞으로추가할거있으면하겠지만.. 이제마지막이네요ㅡㅡ ; sizeof 연산자 array, struct/union 에대해선할당받은크기 포인터에겐포인터의크기를돌려줌

More information

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,

More information

chap7.key

chap7.key 1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 (Host) set up : Linux Backend RS-232, Ethernet, parallel(jtag) Host terminal Target terminal : monitor (Minicom) JTAG Cross compiler Boot loader Pentium Redhat 9.0 Serial port Serial cross cable Ethernet

More information

Microsoft Word doc

Microsoft Word doc 2. 디바이스드라이버 [ DIO ] 2.1. 개요 타겟보드의데이터버스를이용하여 LED 및스위치동작을제어하는방법을설명하겠다. 2.2. 회로도 2.3. 준비조건 ARM 용크로스컴파일러가설치되어있어야한다. 하드웨어적인점검을하여정상적인동작을한다고가정한다. NFS(Network File System) 를사용할경우에는 NFS가마운트되어있어야한다. 여기서는소스전문을포함하지않았다.

More information

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 Outline n n n n n n 보드개요보드연결필수패키지, Tool-Chain 설치 Kernel, file system build Fastboot 및 Tera Term설치 Kernel, file system 이미지전송및설치 - 2 - Young-Jin Kim X-Hyper320TKU

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 UNIX 및실습 8 장. 프로세스와사용자 명령익히기 1 학습목표 유닉스에서프로세스가무엇인지그개념을이해한다. 프로세스와관련된유닉스명령의사용방법을익힌다. 포그라운드처리와백그라운드처리의차이를이해한다. 사용자정보를보는명령의사용방법을익힌다. 2 01. 프로세스의개념과종류 프로세스 (process) 현재시스템에서실행중인프로그램 프로세스는고유번호를가진다. Process

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

untitled

untitled Push... 2 Push... 4 Push... 5 Push... 13 Push... 15 1 FORCS Co., LTD A Leader of Enterprise e-business Solution Push (Daemon ), Push Push Observer. Push., Observer. Session. Thread Thread. Observer ID.

More information

KEY 디바이스 드라이버

KEY 디바이스 드라이버 KEY 디바이스드라이버 임베디드시스템소프트웨어 I (http://et.smu.ac.kr et.smu.ac.kr) 차례 GPIO 및 Control Registers KEY 하드웨어구성 KEY Driver 프로그램 key-driver.c 시험응용프로그램 key-app.c KEY 디바이스드라이버 11-2 GPIO(General-Purpose Purpose I/O)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)

More information

Sena Technologies, Inc. HelloDevice Super 1.1.0

Sena Technologies, Inc. HelloDevice Super 1.1.0 HelloDevice Super 110 Copyright 1998-2005, All rights reserved HelloDevice 210 ()137-130 Tel: (02) 573-5422 Fax: (02) 573-7710 E-Mail: support@senacom Website: http://wwwsenacom Revision history Revision

More information

OPCTalk for Hitachi Ethernet 1 2. Path. DCOMwindow NT/2000 network server. Winsock update win95. . . 3 Excel CSV. Update Background Thread Client Command Queue Size Client Dynamic Scan Block Block

More information

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D> 학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 프로세스생성 [1] 프로그램실행

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 프로세스생성과실행 IT CookBook, 유닉스시스템프로그래밍 학습목표 프로세스를생성하는방법을이해한다. 프로세스를종료하는방법을이해한다. exec함수군으로새로운프로그램을실행하는방법을이해한다. 프로세스를동기화하는방법을이해한다. 2/24 목차 프로세스생성 프로세스종료함수 exec 함수군활용 exec 함수군과 fork 함수 프로세스동기화 3/24 프로세스생성 [1]

More information

Microsoft PowerPoint APUE(File InO).ppt

Microsoft PowerPoint APUE(File InO).ppt 컴퓨터특강 () [Ch. 3] 2006 년봄학기 문양세강원대학교컴퓨터과학과 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 1 What is a File? A file is a contiguous

More information

Microsoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드]

Microsoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드] 소켓개요 참고문헌 : 컴퓨터네트워크프로그래밍, 김화종, 홍릉과학출판사 Socket 정의 Socket 은 Transport 계층 (TCP 나 UDP) 을이용하는 API 1982 년 BSD 유닉스 41 에서처음소개 윈도우즈의경우 Winsock 제공 JAVA 또한 Socket 프로그래밍을위한클래스제공 Socket Interface 의위치 5-7 (Ses, Pre,

More information

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR Configure Kernel Build Environment And kernel & root file system Build 2018-09-27 VLSI Design Lab 1 지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함.

More information

Microsoft PowerPoint APUE(File InO)

Microsoft PowerPoint APUE(File InO) Linux/UNIX Programming 문양세강원대학교 IT특성화대학컴퓨터과학전공 강의목표및내용 강의목표 파일의특성을이해한다. 파일을열고닫는다. 파일로부터데이터를읽고쓴다. 기타파일제어함수를익힌다. 강의내용 파일구조 (UNIX 파일은어떤구조일까?) 파일관련시스템호출 시스템호출의효율과구조 Page 2 What is a File? A file is a contiguous

More information

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터 운영체제실습 Raspbian 설치 2017. 3 표월성 wspyo74@naver.com cherub.sungkyul.ac.kr 목차 Ⅰ. 설치 1. 라즈비안 (Raspbian 설치 ) 2. 설치후, 설정 설정사항 Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로

More information

4S 1차년도 평가 발표자료

4S 1차년도 평가 발표자료 모바일 S/W 프로그래밍 안드로이드개발환경설치 2012.09.05. 오병우 모바일공학과 JDK (Java Development Kit) SE (Standard Edition) 설치순서 Eclipse ADT (Android Development Tool) Plug-in Android SDK (Software Development Kit) SDK Components

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 03 장 도메인네임시스템과주소 패밀리 (IPv4-IPv6 서비스 ) 1 목차 제 3 장도메인네임시스템과주소패밀리 3.1 도메인네임주소를숫자주소로매핑하기 3.2 IP 버전에무관한주소-범용코드의작성 3.3 숫자주소에서도메인네임주소획득하기 2 getaddrinfo() 를활용한주소 범용 (Generic) 코드 주소범용 (Generic) 코드란? 주소버전

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

휠세미나3 ver0.4

휠세미나3 ver0.4 andromeda@sparcs:/$ ls -al dev/sda* brw-rw---- 1 root disk 8, 0 2014-06-09 18:43 dev/sda brw-rw---- 1 root disk 8, 1 2014-06-09 18:43 dev/sda1 brw-rw---- 1 root disk 8, 2 2014-06-09 18:43 dev/sda2 andromeda@sparcs:/$

More information

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이 모바일웹 플랫폼과 Device API 표준 이강찬 TTA 유비쿼터스 웹 응용 실무반(WG6052)의장, ETRI 선임연구원 1. 머리말 현재 소개되어 이용되는 모바일 플랫폼은 아이폰, 윈 도 모바일, 안드로이드, 심비안, 모조, 리모, 팜 WebOS, 바다 등이 있으며, 플랫폼별로 버전을 고려하면 그 수 를 열거하기 힘들 정도로 다양하게 이용되고 있다. 이

More information

슬라이드 1

슬라이드 1 CCS v4 사용자안내서 CCSv4 사용자용예제따라하기안내 0. CCS v4.x 사용자 - 준비사항 예제에사용된 CCS 버전은 V4..3 버전이며, CCS 버전에따라메뉴화면이조금다를수있습니다. 예제실습전준비하기 처음시작하기예제모음집 CD 를 PC 의 CD-ROM 드라이브에삽입합니다. 아래안내에따라, 예제소스와헤더파일들을 PC 에설치합니다. CD 드라이브 \SW\TIDCS\TIDCS_DSP80x.exe

More information

android_HAL_input.hwp

android_HAL_input.hwp Android HAL input 1. 안드로이드 Input 시스템개요 안드로이드의 Input 시스템은최하위 Kernel 단에서부터최상위어플리케이션단까지많은단계가존재한다. 이렇게단계가많은이유는 java 가디바이스에접근하기위해서 jni 를사용하였기때문이다. 그럼먼저사용자가입력을한데이터가어플리케이션에전달되는과정을대략적으로알아보도록하자 (1) 사용자입력이일어남 (2)

More information

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾ P a 02 r t Chapter 4 TCP Chapter 5 Chapter 6 UDP Chapter 7 Chapter 8 GUI C h a p t e r 04 TCP 1 3 1 2 3 TCP TCP TCP [ 4 2] listen connect send accept recv send recv [ 4 1] PC Internet Explorer HTTP HTTP

More information

Embeddedsystem(8).PDF

Embeddedsystem(8).PDF insmod init_module() register_blkdev() blk_init_queue() blk_dev[] request() default queue blkdevs[] block_device_ops rmmod cleanup_module() unregister_blkdev() blk_cleanup_queue() static struct { const

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

슬라이드 제목 없음

슬라이드 제목 없음 < > Target cross compiler Target code Target Software Development Kit (SDK) T-Appl T-Appl T-VM Cross downloader Cross debugger Case 1) Serial line Case 2) LAN line LAN line T-OS Target debugger Host System

More information

Solaris Express Developer Edition

Solaris Express Developer Edition Solaris Express Developer Edition : 2008 1 Solaris TM Express Developer Edition Solaris OS. Sun / Solaris, Java, Web 2.0,,. Developer Solaris Express Developer Edition System Requirements. 768MB. SPARC

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

Lab 5. 실습문제 (Double linked list)-1_해답.hwp

Lab 5. 실습문제 (Double linked list)-1_해답.hwp Lab 5. Doubly-linked list 의구현 실험실습일시 : 2009. 4. 13. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 19. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Doubly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Doubly-linked list의각함수를구현한다.

More information

歯9장.PDF

歯9장.PDF 9 Hello!! C printf() scanf() getchar() putchar() gets() puts() fopen() fclose() fprintf() fscant() fgetc() fputs() fgets() gputs() fread() fwrite() fseek() ftell() I/O 2 (stream) C (text stream) : `/n'

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

슬라이드 1

슬라이드 1 Computer Networks Practice Socket 1 DK Han Junghwan Song dkhan@mmlab.snu.ac.kr jhsong@mmlab.snu.ac.kr 2012-3-26 Multimedia and Mobile communications Laboratory Introduction Client / Server model Server

More information

The OSI Model

The OSI Model Advanced Socket Programming Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 다중처리기술 2 다중처리기술 Multitasking Multi-process Multi-thread Multiplexing Polling Selecting Interrupt

More information

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E > 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 소켓 (Socket) (1/2) Socket 이란? 서버와클라이언트가서로특정한규약을사용하여데이터를전송하기위한방식 서버와클라이언트는소켓연결을기다렸다가소켓이연결되면서로데이터를전송 현재네트워크상에서의모든통신의근간은 Socket 이라할수있음 Page 2 1 소켓 (Socket) (2/2)

More information

vi 사용법

vi 사용법 네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o

More information

Microsoft PowerPoint APUE(Intro).ppt

Microsoft PowerPoint APUE(Intro).ppt 컴퓨터특강 () [Ch. 1 & Ch. 2] 2006 년봄학기 문양세강원대학교컴퓨터과학과 APUE 강의목적 UNIX 시스템프로그래밍 file, process, signal, network programming UNIX 시스템의체계적이해 시스템프로그래밍능력향상 Page 2 1 APUE 강의동기 UNIX 는인기있는운영체제 서버시스템 ( 웹서버, 데이터베이스서버

More information