Microsoft PowerPoint - LN_7_Linux_MM.ppt [호환 모드]

Size: px
Start display at page:

Download "Microsoft PowerPoint - LN_7_Linux_MM.ppt [호환 모드]"

Transcription

1 프로젝트 1 Memory Management 단국대학교컴퓨터학과 29 백승재 ibanez1383@dankook.ac.kr k k

2 강의목표 리눅스의물리메모리관리기법이해 할당 / 해제기법 리눅스의가상메모리관리기법이해 할당 / 해제기법 리눅스의물리메모리와가상메모리연결 / 혹은변환기법이해

3 가상메모리개념 (1/4) 3 가상메모리개념 프로그램이적재되어있는물리메모리와프로그램의수행시참조하는가상메모리를구분 가상주소 (virtual address) 와물리주소 (physical address) 간단한 C 프로그램예 /* test.c */ #include <stdio.h> int a,b; int glob = 3; char buf[1]; main(int argc, char *argv[]) { int i = 1; int local_var; } a=i+1; printf( value of a = %d\n,a);

4 가상메모리개념 (2/4) 4 test.c 의가상메모리구조 4GB kernel space /* 지역변수 */ kernel i l 3GB stack argc, argv, i, local_varl user space heap bss data text /* 전역변수 */ a, b, glob, buf /* 명령어 */ a=i+1; printf( value of a = %d\n,a);

5 가상메모리개념 (3/4) 5 Linux 커널에서가상메모리구조 xffffffff xc env_end arg_end arg_start start_stack end_bss end_data end_code start_code kernel stack bss data text bss data text shared memory other shared library shared C library x brk end_ data end_code start_code bss data text program (Source : Linux kernel Internals)

6 가상메모리개념 (4/4) 6 물리메모리구조 물리메모리는고정된크기의기본단위로구분된다. 기본단위를페이지프레임 (page frame) 이라고함. 보통 4/8KB physical memory 물리메모리의기본단위를 page frame, 가상메모리의기본단위를 page 라고한다!!

7 Memory Model(1/2) 7 Bus UMA Bus NUMA (Source : Unix Internals)

8 Memory Model(2/2) 8 Hybrid NUMA NORMA (Source : Unix Internals)

9 Bank and Node 9 UMA Bus Bus Bank Bank NUMA Bank pg_data_t contig_page_data Node pg_data_t *pgdat_list typedef struct pglist_data { zone_t node_zones[max_nr_zones]; zonelist_t t node_zonelists[gfp_zonemask+1]; int nr_zones; Node struct page *node_mem_map; unsigned long *valid_addr_bitmap; struct bootmem_data *bdata; unsigned long node_start_paddr; unsigned long node_start_mapnr; unsigned long node_size; int node_id; struct pglist_data *node_next; } pg_data_t; _ Node Node Node NULL

10 NODE 자료구조 typedef struct pglist_data{ zone_t node_zones[max_nr_zones]; // node를위한zone은 ZONE_HIGHMEM, ZONE_NORMAL, ZONE_DMA 3개이다. // 각 zone을가리키기위한배열임 zonelist_t node_zonelists[gfp_zonemask+1]; // ((xf=15)+1=16) 할당시에우선시되는 zone 순서를나타냄 // free_area_init_core() 에의해 // mm/page_alloc.c내의 build_zonelists() 가호출되면이순서를정렬해놓는다 int nr_zones; // 이 node에몇개의 zone이있는지나타내는 1~3사이의값. // 예를들어어떤 CPU는 ZONE_DMA 에해당되는메모리영역이없을수도있으므로항상 3은아니다 struct page *node_mem_map; // node 의각 physical frame 을나타내는 struct t page 배열의첫번째 page 임. }pg_data_t; // 이는전역배열인 mem_map 의어딘가에들어갈것이다 unsigned long *valid_addr_bitmap; // memory node 상에서, 실제로존재하지않는 'holes' 를나타내기위한 BITMAP // 사실상, Sparc과 Sparc64에서만사용되며다른 arch에선무시됨 struct bootmem_data *bdata // boot memory allocator가사용하는필드 unsigned long node_start_paddr; // node의 physical 한시작주소 // unsigned long은 PAE(physical Address Extension) 을사용하는 IA32나 // PPC44GP같은 PowerPC의변종들에선최적화되어작동하지않는다 // 좀더나은방법은 PFN(Page Frame Number) 를기록하는것이다. // PFN은간단히말해서 page-size단위로계산되는 physical memory의 index이다 // PFN은보통 (page_phys_addr >> PAGE_SHIFT) 로정의된다. unsigned long node_start_mapnr; // mem_map내에서의 page offset을나타냄 // 이숫자는,mem_map 과 lmem_map 이라고불리는 local l mem_map 사이의 page 갯수를계산하는, // free_area_init_core() 에서계산됨 unsigned long node_size; // 이 node내의총 page수 int node_id; // 에서시작되는 Node ID(NID) struct pglist_data *node_next; // NULL 로끝나도록되어있는, 다음 node 를가리키는 pointer 1

11 Node and Zone 11 Node ZONE ZONE ZONE typedef struct zone_struct { spinlock_t lock; unsigned long free_pages; unsigned long pages_min, pages_low, pages_high; int need_balance; free_area_t free_area[max_order]; wait_queue_head_t * wait_table; unsigned long wait_table_size; unsigned long wait_table_shift; struct pglist_data *zone_pgdat; struct page *zone_mem_map; unsigned long zone_start_paddr; unsigned long zone_start_mapnr; char *name; unsigned long size; } zone_t; ZONE_DMA ZONE_NORMAL ZONE_HIGHMEM X86 System 에서는 ZONE_DMA ~ 16M ZONE_NORMAL 16 ~ 896M ZONE_HIGHMEM 896 ~ end

12 Kernel Address Space(1/13) 12 Physical Address S/W CPU Data

13 Kernel Address Space(2/13) 13 Physical Address Linux CPU Data

14 Kernel Address Space(3/13) 14 Physical Address Linux CPU Data 1M Physical Memory Linux zimage 1G

15 Kernel Address Space(4/13) 15 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory 1M Linux zimage

16 Kernel Address Space(5/13) 16 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory Kernel 이사용 3G User APP가사용 1M Linux zimage

17 Kernel Address Space(6/13) 17 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory 3G 1M Linux zimage

18 Kernel Address Space(7/13) 18 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory Paging 3G 1M Linux zimage

19 Kernel Address Space(8/13) 19 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory 3G 1M Linux zimage

20 Kernel Address Space(9/13) 2 Linu x CPU Physical Address Data 4G Virtual Address Space 1G Physical Memory 3G Kernel have no mm_struct! 1M Linux zimage

21 Kernel Address Space(1/13) 21 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory Kernel 을위한 Page Global Directory 즉, Master Kernel Page Global Directory 3G swapper_pg_dir 1M Linux zimage

22 Kernel Address Space(11/13) 22 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory 이제 Kernel 도 Physical Memory 에접근할수있게되었습니다. Linux Kernel 은 OS 입니다. 모든 Physical Memory 에접근해야합니다. 3G 1M Linux zimage

23 Kernel Address Space(12/13) 23 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory 1:1 매핑은어떨까요? 문제점은? 3G 1M Linux zimage

24 Kernel Address Space(13/13) 24 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory 896M 896M 까지만 1:1 매핑하고 그이상의메모리는임시로매핑하여사용 3G 1M Linux zimage

25 ZONE 자료구조 25 typedef struct zone_struct{ spinlock_t lock; //concurrent 한접근으로부터 zone을보호하는 spinlock unsigned long free_pages; // 현재 zone내의 free page들의총개수 unsigned long pages_min, pages_los, pages_high; //zone watermarks int need_balance; // 이플래그는 zone의균형을유지하기위해 kswapd 에게 pageout요청을하는데사용되는 flag이다 free_area_t free_area[mar_order]; //buddy allocator이사용하는 free area bitmaps wait_queue_head_t *wait_table; // Process 들이 page 가 free 되기를기다릴때사용되는 wait queues 의 hash table 이다 // 이는 wait_on_page() 와 unlock_page() 에서매우중요하다 // 물론 process들은한개의 queue에서대기할수도있지만, 이렇게하게된다면 // wake up 하게되는때에, 모든 process들은 lock걸리기전까지는 page를얻기위해경쟁하게된다 // 이렇게공유자원을얻기위해다투는프로세스들의큰그룹을 // Thundering herd 라고부른다. // (thundering herd : 여러프로세스가깨어나서, 이중, 하나만사용할수있는자원을차지하려고경쟁하고, // 나머지프로세스는다시잠든상태로돌아가는상황 ) unsigned long wait_table_size; //hash table내의 queue개수를결정하는, 2의제곱의수 unsigned long wait_table_shift; // 위에정의된 table size를계산하는데사용되는이진비트조합 struct pglist_data *zone_pgdat; // 부모 pg_data_t를가리키는 pointer struct page *zone_mem_map; // 현재 zone이참조하게되는전역배열 mem_map내의첫번째 page unsigned long zone_start_paddr; //node_start_paddr과유사하게사용됨 unsigned long zone_start_mapnr; //node_start_mapnr과유사하게사용됨 char *name; //ZONE을나타내는 'DMA', 'NORMAL', 'HIGHMEM' 중하나의문자열 unsigned long size; // page단위로표현되는 zone의크기 }zone_t;

26 ZONE 의 watermarks 26 Zone Watermarks

27 Watermarks 계산 27 Zone Watermarks page_low, pages_min, pages_high 보통 pages_low = pages_min * 2 pages_high = pages_min * 3 pages_min 필드는 free_area_init_core() 함수내에서계산됨 보통 (ZoneSizeInPages / 128)

28 ZONE 과 PageFrame 28 ZONE Page frame Page frame Page frame Page frame Page frame Page frame Page frame typedef struct page { struct list_head list; struct address_space *mapping; unsigned long index; struct page *next_hash; atomic_t count; unsigned long flags; struct t list_head lru; struct page **pprev_hash; struct buffer_head * buffers; #if defined(config_highmem) defined(want_page_virtual) void *virtual; #endif /* CONFIG_HIGMEM WANT_PAGE_VIRTUAL */ } mem_map_t; Page Page frame frame Page frame Page frame Page frame Page frame Page frame Page frame 각 NODE의모든page 구조체는보통 ZONE_NORMAL의시작부분 ( 혹은커널이올라오기위해예약해놓은메모리바로다음 ) 위치에있는전역배열인 mem_map 에유지된다

29 Page Frame 자료구조 29 typedef struct page{ struct list_head list; // page는많은list에속해있을수있고, 이필드는 list head를위해사용된다. // 예를들어, mapping되어있는 page는 address_space에의해관리되는세개의원형링크드리스트중하나에속해있을것이다. // 이세개의원형링크드리스트는 clean_pages, dirty_pages, locked_pages이다. // slab allocator 에서이필드는슬랩할당자에의해할당되었을때 page 를관리하기위해 // slab이나 cache structures로의포인터를저장하는역할을한다. // 또한 free pages의 link blocks 에서도사용된다. struct address_space *mapping // 파일이나 device 가 memory mapped 되어있을때, 그들의 inode 는 address_spacespace 와연결되어있다. // 만약이 page가파일에연결되어있다면이필드는 address space를가리킨다. // 만약 page가 anonymous이며 mapping이 set되어있다면, // address_space는 swap address space를관리하는 swapper_space이다. unsigned long index; // 이필드는두가지용도를가지며, 이는 page의 state가결정한다. // 만약이 page가 file mapping의일부라면이는 file내의 offset이다 // 만약이 page가 swap cache의일부라면이는 swap address space(swapper_space) 를위한address_space내의 offset이됨 // 둘째, 만약 page들의블록이특정 process를위해free되었다면 // 블록내에서의순서가저장될것이다. 이는 free_pages_ok() 함수내에서 set 된다 struct page *next_hash; // 파일매핑의일부인 page는 inode와 offset에의해hash된다. // 이필드는같은 hash bucket을공유하는페이지들을 link시켜주는필드이다.

30 Page Frame 자료구조 3 atomic_t count; // page의참조횟수이다. 만약 이되면이페이지는 free될것이다. // 그보다크다면, 하나이상의프로세스에서사용중이거나, // I/O를기다리기위한작업등으로인해커널내에서사용중임을나타낸다. unsigned long flags; // page 의상태를나타내는 flags 이다. 이는 <linux/mm.h> 내에모두정의되어있고, 표 에나열해놓았다. // bit를 test, clear, set하기위한여러개의매크로가정의되어있으며, 이를표 2.2에보였다. // 사실유일하게관심있는함수는아키텍쳐에의존적인함수인 arch_set_page_uptodate() 를 call하는setpageuptodate() 이다. struct list_head lru; // page 교체정책을위해, 교체되어나갈 page 는 // page_alloc.c내에정의되어있는 active_list나 inactive_list 둘중하나에존재해야한다. // 이필드는이러한 LRU리스트의 list head를가리키게된다. struct page **pprev_hash; // next_hash 의보완책인이필드로인해 hash 는 doubly lonked list 로동작할수있다. struct buffer_head *buffers; // 만약 page가연결되어있는 block device를위한buffer를가지고있다면 // buffer_head에대한정보를유지하기위해사용된다. // 만약 (it is backed by a swap file) 이면프로세스에의해 mapped된 anonymous page인경우엔 // 연결되어있는 buffer_head 를가리킬수도있다. // 이때 page는, 속해있는파일시스템에서정하는 block size단위로, // 저장장치로저장되는 sync작업이일어나야하므로필요하다. #if defined (CONFIG_HIGHMEM) defined(waant_page_virtual) void *virtual; // 일반적으로는 ZONE_NORMAL에속해있는 page만이커널에의해직접지정이가능하다 // ZONE_HIGHMEM zone내에있는 page를주소지정하기위해 kmap() 함수가사용되며 // 이함수는 page를 kernel과 map시켜주는역할을한다.(9장에서논의됨 ) // 고정된개수의 page 만이 map 될수있다. 만약 page 가 map 되었다면, 이필드는 page 의가상주소를나타낸다. #endif /*CONFIG_HIGHMEM WANT_PAGE_VIRTUAL */ }mem_map_t;

31 Buddy 31 To reduce external fragmentation Fast allocation and de-allocation of pages 연속적인 page( block ) 단위별로관리 1, 2, 4, 8.. pages each one block

32 free_area_t 구조체 32 /* ~/include/linux/mmzone.h #define MAX_ORDER 1 typedef struct zone_struct { free_area_t free_area[max_order]; } zone_t; typedef struct free_area_struct { struct list_head unsigned long }free_area_t; free_list; *map;

33 Data structure 33 free_area.[order].free_list 특정크기의 free page block 들의이중연결리스트 free_area.[order].map ((number of pages) -1 ) >> (order + 4)) + 1bytes 한비트가하나의버디의상태를나타낸다

34 Memory allocation Physical Memory 8. 2page alloc. 요청 free free_area.free_list fee free_area[order].map aea[ode]map Pages order() 1 1 order(1) 1-> order(2) 1 order(3)

35 Memory allocation Physical Memory. 2page alloc. 요청 free free_area.free_list fee free_area[order].map aea[ode]map Pages order() 1 1 order(1) -> 1 order(2) 1 -> order(3)

36 Memory de-allocation alloc 14 11번 page 해제요청 free_area.free_list index = page_idx >> (order + 1) => 11 >> ( + 1 ) = 5 fee free_area[order].map aea[ode]map free index >>= Physical Memory Pages order() order(1) order(2) order(3) > 1 -> 1-> -> 1

37 Buddy 관련함수 37

38 Slab Allocator 38 슬랩할당자 버디알고리즘은적은메모리할당엔부적절 같은크기의메모리공간에대한할당을반복하는경향있으므로캐시개념도입 캐시 : 객체의모음 같은크기메모리공간의창고 슬랩 : 캐시가들어있는주메모리영역을나눈것 (/proc/slabinfo) 연속된 PF하나이상으로구성됨 할당한객체와여유객체를모두포함 빈슬랩의 PF 스스로해제안함

39 Slab Allocator 구조 39 kmem_cache_t cache_cache next = cache_chain cache cache cache kmem_list3 slabs_full slabs_free slabs_partial slab slab slab slab (full) (full) (full) slab (free) slab (partial) slab (partial) object object

40 일반캐시와특수캐시 4 일반캐시 첫번째캐시 : 커널이사용하는나머지일반캐시에대한캐시디스크립터 cache_cache 변수에이디스크립터가들어있다 추가캐시 26 개 ( 나머지 26 개 ) : 기하학적으로메모리영역이들어있다. 32, 64, 128, 256, 512, 124, 248, 496, 8192, 16384, 32768, 65536, 바이트메모리영역당두개의캐시디스크립터 두개중하나는 ISA DMA 용, 다른하나는일반할당용 특수캐시 자주할당해제되는커널의자료구조들을위한캐시

41 슬랩관련함수 41

42 가상주소공간할당 / 해제 42 일부가상주소공간 = region = 영역 = 구간 = vm_area_struct 메모리구역겹치는일은없음 인접한두구역은접근권한일치시합침

43 Creating a memory region ex. 43 case 1 arch_get_unmapped_area if addr!= null if addr + len < vma->start VMA. 1G next len addr VMA next VMA. 3G

44 Creating a memory region ex. 44 case 2 addr!= null addr + len > vma->start. OR addr == null VMA 1G next len addr VMA next VMA return ENOMEM If last vm_end + len > 3G len. addr 3G

45 Creating a memory region ex. 45 do_mmap_pgoff. 1G VMA next next new VMA len addr next VMA next VMA. 3G

46 Merging contiguous region 46 do_mmap_pgoff merge-able. 1G VMA next len addr next VMA next VMA. 3G

47 Remapping and Moving a memory region 47 do_mmap_pgoff memory region growing or shrink find another region. 1G VMA next VMA len next VMA new VMA. 3G

48 Delete a memory region 48 do_munmap. 1G VMA next VMA next VMA. 3G

49 Delete a memory region 49 do_munmap. 1G VMA next VMA next next next new VMA VMA. 3G

50 Linux 의 Page Table Management 전체구조 5

51 Linux 의 PGD 51 task_struct mm mm_struct pgd include/asm-i386/page.h <<pgd_t>> typedef struct { unsigned long long pgd; } pgd_t; include/asm-arm/page.h <<pgd_t>> typedef unsigned long pgd_t; Page Frame Array of pgd_t type Physical Memory pgd 로딩? X86 이라면 mm->pgd 를 cr3 에복사함으로써이뤄짐 flush_tlb() (cr3 복사는 TLB flushing 을유발하는단점이있음 )

52 task_struct mm mm_struct pgd Linux 의 PGD, PMD, PTE 52 Physical Memory Page Frame Page Fram me Page Frame Page Frame pgd_t pmd_t pte_t pgd_t pmd_t pte_t pgd_t pmd_t pte_t pgd_t pmd_t pte_t t pgd_t pmd_t pte_t PGD PMD PTE Swap out된경우에는? Swap entry 가 PTE 에저장되어있음 Fault 맞으면이 swap entry 를이용해 do_swap_page() 함수가 page 를처리해줌

53 주소변환을위한매크로 53

54 주소변환과정의이해 54 /* mm/memory.c */ static struct page * follow_page(struct mm_struct *mm, unsigned long address, int write) { pgd_t *pgd; pmd_t *pmd; pte_t *ptep, pte; pgd = pgd_offset(mm, address); if( pgd_none(*pgd) pgd_bad(*pgd)) goto out; pmd = pmd_offset(pgd, address); if( pmd_none(*pmd) pmd_bad(*pmd)) goto out; ptep = pte_offset(pmd, address); if(!ptep) goto out; } pte = *ptep;.

55 인텔처리기의페이징 55 주소변환 Linear Address Directory Table Offset Physical Memory Page Directory Page Table 4K page entry entry ( In Physical Memory ) CR3

56 부터도입된 4 단계페이징 (x86_64 기준 ) 56 64bit address translation 4-level translation Sign Extended PML4 Directory Ptr Directory Table Offset PML4 Page-Directory- Pointer Table Page-Directory Page-Table Physical-Address entry entry entry entry 4K Page ( In Physical Memory ) CR3 (PML4) 512 PML4 * 512 PDPTE * 512 PDE * 512 PTE = 2 36 Page frames (256TB)

57 커널의가상주소사용 (32bit 처리기기준 ) 57 Kernel address space( 32bit ) Virtual Memory 1MB 8MB 16MB 896MB 124MB Dynamically allocated VM_RESERVE (128M) Physical Memory BIOS comm area kernel code image DMA region mem_map

58 커널의가상주소사용 (64bit 처리기기준 ) 58 xffff ffff ffff ffff xffff ffff fff xffff ffff 88 xffff ffff 828 xffff ffff 8 xffff e2 xffff c2 xffff c1 xffff 81 xffff 8 x 7fff ffff ffff x module mapping space (1919MB) unused hole kernel text mapping (4MB) unused hole ioremap space (32TB) hole (1 TB) direct mapping space (64TB) guard hole. stack heap data text 가상메모리 kernel space user space

59 mm_struct 59 mm struct <linux/sched.h> h> struct mm_struct { struct vm_area_struct * mmap; // 주소공간내의모든 VMA regions 을연결하는 linked list 의 head rb_root_t mm_rb; //VMA는빠른탐색을위해 red_black tree형태의 linked list로구성된다. // 이필드는tree의 root를나타낸다 struct vm_area_struct * mmap_cache; // 마지막으로 find_vma() 함수가호출되었을때검색된 VMA를저장해놓는필드 // 이는한번사용된 VMA가곧다시사용될것이라는가정에기반한다. pgd_t * pgd; // 이프로세스를위한 PGD atomic_t mm_users; // 주소공간중유저공간에접근한사용자의카운트 atomic_t mm_count; //1 에서부터시작하는,real user를위한카운트필드 int map_count; // 사용중인 VMA개수 struct rw_semaphore mmap_sem; // 이는 VMA list에대한r/w시에보호를위해존재하는 lock이다. // 이를사용하는유저들은보통장시간사용하거나 // 락을잡은채로 sleep할수도있기때문에 spinlock은적합하지않다. // 이 list를 read하려는측에서는 down_read() 를통해세마포어를획득해야한다. // 만약 write를하려면down_write() 를통해서권한을획득해야하며 // 추후 VMA 를업데이트해야하는시점에는 page_table_lock 이란이름의 spinlock 을획득해야만한다.

60 mm_struct 6 }; spinlock_t page_table_lock; lock; // 이는 mm_struct구조전반에걸친보호 lock이다. //Rss와 VMA를수정으로부터보호해주는역할을담당한다. struct list_head mmlist; // 모든 mm_struct 구조체는이필드를통해연결된다. unsigned long start_code, end_code, start_data, end_data; //code영역의시작과끝, data영역의시작과끝을나타냄 unsigned long start_brk, brk, start_stack; // 힙영역의시작과끝,stack 의시작부분을나타냄 unsigned long arg_start, arg_end, env_start, env_end; //command line argument의주소의시작과끝, environments의시작과끝을나타냄 unsigned long rss, total_vm, locked_vm; //rss: 이프로세스를가사용중인 page 의개수 //global zero page는 RSS에의해카운트되지않는다. //total_vm: 이프로세스에의해점유되고있는전체메모리공간의총합 //locked_vm: 메모리상에 lock되어있는 page의개수 unsigned long def_flags;//vm_locked한가지값만이가능함 // 이는디폴트로앞으로일어날모든매핑이 lock될지를결정하는필드임 unsigned long cpu_vm_mask; //SMP system에서모든가능한 CPU를나타내는비트마스크 // 이는 IPI에의해서 CPU가특정함수를수행해야할지말아야할지를결정할때사용됨 // 이는각 CPU의 TLB를 flush시키는시점에중요하게사용됨 unsigned long swap_address; // 이는전체프로세스가스왑되어버린경우에 page out daemon이 // 어디서 swap 되었는지를기록하는데사용하는필드 unsigned dumpable:1;//prctl() 에의해set되며, 이필드는 process를 trace하고있을때만사용됨 mm_context_t context;// 아키에스페시픽한 MMU context

61 mm_struct 와가상주소공간구조 61 mm_struct 자료구조분석 include/linux/sched.h struct mm_struct { struct vm_area_struct *mmap; struct vm_area_struct *mmap_avl, *mmap_cache; pgd_t *pgd; atomic_t count; int map_count; struct semaphore mmap_sem; unsigned long context; t unsigned long start_code, end_code, start_data; unsigned long end_data, start_brk, brk, start_stack; unsigned long arg_start, arg_end, env_start, env_end; unsigned long rss, total_vm, locked_vm, def_flags; flags; } unsigned long swap_cnt, swap_address; void *segment; env_end arg_end arg_start start_stack brk end_data end_code start_code kernel stack bss data text typedef struct {unsigned long pgd;} pgd_t; /* include/asm-i386/page.h */

62 Memory Region 62 task_struct mm mm_struct pgd mmap vm_area_struct vm_end vm_start vm_prot vm_flags vm_next shared libraries pgd: page directory address vm_prot: read/write permissions for this area vm_flags shared with other processes or private to this process vm_end vm_start vm_prot vm_flags vm_next vm_end vm_start vm_prot vm_flags vm_next data text

63 vm_area_struct 자료구조 63 struct vm_area_struct { struct mm_struct * vm_mm; unsigned long vm_start; // 이 VMA가속해있는 mm_struct //regions의시작주소 unsigned long vm_end; //regions 의 end 주소 struct vm_area_struct *vm_next; // 주소공간내의모든 VMA 는이필드를통해 single linked list 로연결됨 }; pgprot_t vm_page_prot; // 이 VMA 내의 PTE 에적용되는 protections bit. 표 3.1 참조 unsigned long vm_flags; //VMA 의특성과 protections ti 을나타내는 flags rb_node_t vm_rb; //list로연결되어있는 VMA구조에서빠른검색을위해 VMA를 red-black tree로관리한다. // 이는특히대용량의공간이매핑되어있는상황에서페이지폴트가발생하여 // 빠르게적합한 regions을찾는것이중요한경우중요하게사용될수있다. struct vm_area_struct *vm_next_share; //shared library 처럼파일매핑에기반한 shared VMA 를 link 하는필드 struct vm_area_struct **vm_pprev_share; // vm_next_share의반대작업 struct vm_operations_struct * vm_ops; //open(), close(), nopage() 에대한함수포인터를담고있다. //disk와 data를 sync할때사용됨 unsigned long vm_pgoff; struct file * vm_file; unsigned long vm_raend; // 메모리맵되어있는파일인경우 page 단위로 aligned 되어있는 offset // 맵되어있는파일의 struct file에대한포인터 //read-ahead window의 end address. //fault가발생하면실제원하는 page에딸려서몇개의 page가같이올라온다. // 이때얼마나많은 page 가딸려서올라올지를결정한다 void * vm_private_data; //memory manage 에관계없이 device driver 가자체적인정보를저장할때사용된다.

64 Linux 커널메모리관리함수 64 Interface struct page * alloc_pages(unsigned int gfp_mask, unsigned int order) 2^order 크기의연속된물리적페이지들을할당후, 첫페이지의 page 구조체포인터를리턴 void * page_address(struct page *page) 매개변수로넘긴물리적페이지가현재포함돼있는논리적주소에대한포인터반환 Wrapping Function Page-level allocator : get_free_page() 요청된만큼의연속된메모리를할당 Kernel-level allocator 물리적으로연속하며, 128KB 이하임의길의의메모리할당 : kmalloc() 물리적으로비연속적인메모리할당 : vmalloc() Non-Contiguous Allocation Contiguous Allocation Slab Allocator Page-level Allocation Buddy System

Microsoft PowerPoint - Chapter_03.pptx

Microsoft PowerPoint - Chapter_03.pptx 1 Memory Management April, 216 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj Program, Process & Virtual Address 2 32bit 64bit 4GB 3GB stack 16EB 128TB Kernel Space heap User

More information

리눅스커널-06

리눅스커널-06 C h a p t e r 06 CPU CPU CPU 1MB 600KB 500KB 4GB 512MB 1GB 230 231 Virtual Memory Physical Memory Virtual address Physical address 0 CPU 4GB 3GB 1GB 61 init proc1maps cat 0x08048000 0xC0000000 0x08048000

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

Microsoft PowerPoint - o8.pptx

Microsoft PowerPoint - o8.pptx 메모리보호 (Memory Protection) 메모리보호를위해 page table entry에 protection bit와 valid bit 추가 Protection bits read-write / read-only / executable-only 정의 page 단위의 memory protection 제공 Valid bit (or valid-invalid bit)

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

슬라이드 1

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

More information

11장 포인터

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

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

슬라이드 1

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

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

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

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2 제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.

More information

61 62 63 64 234 235 p r i n t f ( % 5 d :, i+1); g e t s ( s t u d e n t _ n a m e [ i ] ) ; if (student_name[i][0] == \ 0 ) i = MAX; p r i n t f (\ n :\ n ); 6 1 for (i = 0; student_name[i][0]!= \ 0&&

More information

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

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

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

Chapter 4. LISTS

Chapter 4. LISTS 연결리스트의응용 류관희 충북대학교 1 체인연산 체인을역순으로만드는 (inverting) 연산 3 개의포인터를적절히이용하여제자리 (in place) 에서문제를해결 typedef struct listnode *listpointer; typedef struct listnode { char data; listpointer link; ; 2 체인연산 체인을역순으로만드는

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

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

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

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

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

Frama-C/JESSIS 사용법 소개

Frama-C/JESSIS 사용법 소개 Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie

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

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

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

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

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

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

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

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

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 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

1217 WebTrafMon II

1217 WebTrafMon II (1/28) (2/28) (10 Mbps ) Video, Audio. (3/28) 10 ~ 15 ( : telnet, ftp ),, (4/28) UDP/TCP (5/28) centralized environment packet header information analysis network traffic data, capture presentation network

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7> 제14장 동적 메모리 할당 Dynamic Allocation void * malloc(sizeof(char)*256) void * calloc(sizeof(char), 256) void * realloc(void *, size_t); Self-Referece NODE struct selfref { int n; struct selfref *next; }; Linked

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

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

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE> 쉽게풀어쓴 C 언어 Express 제 17 장동적메모리와연결리스트 이번장에서학습할내용 동적메모리할당의이해 동적메모리할당관련함수 연결리스트 동적메모리할당에대한개념을이해하고응용으로연결리스트를학습합니다. 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

hlogin2

hlogin2 0x02. Stack Corruption off-limit Kernel Stack libc Heap BSS Data Code off-limit Kernel Kernel : OS Stack libc Heap BSS Data Code Stack : libc : Heap : BSS, Data : bss Code : off-limit Kernel Kernel : OS

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

PowerPoint Presentation

PowerPoint Presentation FORENSICINSIGHT SEMINAR SQLite Recovery zurum herosdfrc@google.co.kr Contents 1. SQLite! 2. SQLite 구조 3. 레코드의삭제 4. 삭제된영역추적 5. 레코드복원기법 forensicinsight.org Page 2 / 22 SQLite! - What is.. - and why? forensicinsight.org

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

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

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

PowerPoint Template

PowerPoint Template 18 동적할당과고급처리 인터넷정보과 1 2/19 동적할당 목적 다음과같은일반변수의선언과사용은변수를정적 (static) 으로사용 int a = 10; 메모리사용예측이부정확한경우는충분한메모리를미리확보해야하는것은비효율 동적 (dynamic) 메모리할당 (Memory Allocation) 동적인메모리할당을위해서는함수 malloc() 을이용, 메모리공간을확보 함수 malloc()

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Text-LCD Device Control - Device driver Jo, Heeseung M3 모듈에장착되어있는 Tedxt LCD 장치를제어하는 App 을개발 TextLCD 는영문자와숫자일본어, 특수문자를표현하는데사용되는디바이스 HBE-SM5-S4210 의 TextLCD 는 16 문자 *2 라인을 Display 할수있으며, 이 TextLCD 를제어하기위하여

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

Xen으로 배우는 가상화 기술의 이해 - CPU 가상화

Xen으로 배우는 가상화 기술의 이해 - CPU 가상화 Hanbit ebook Realtime 17 Xen으로 배우는 가상화 기술의 이해 CPU 가상화 박은병, 김태훈, 이상철, 문대혁 지음 Xen으로 배우는 가상화 기술의 이해 CPU 가상화 Xen으로 배우는 가상화 기술의 이해 - CPU 가상화 초판발행 2013년 2월 25일 지은이 박은병, 김태훈, 이상철, 문대혁 / 펴낸이 김태헌 펴낸곳 한빛미디어(주) /

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

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

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

[ 마이크로프로세서 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

Microsoft PowerPoint - IOControl [호환 모드]

Microsoft PowerPoint - IOControl [호환 모드] 목차 Input/Output Control I/O Control Mechanism mmap function munmap function RAM Area Access LED Control 4 digits 7 Segment Control Text LCD Control 1 2 I/O Control Mechanism (1) I/O Control Mechanism (2)

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

06장.리스트

06장.리스트 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 리스트 1/28 리스트란? 리스트 (list), 선형리스트 (linear list) 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : ( ㄱ, ㄴ,, ㅎ ) 카드 :

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

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

untitled

untitled Embedded System Lab. II Embedded System Lab. II 2 RTOS Hard Real-Time vs Soft Real-Time RTOS Real-Time, Real-Time RTOS General purpose system OS H/W RTOS H/W task Hard Real-Time Real-Time System, Hard

More information

Microsoft PowerPoint - 알고리즘_1주차_2차시.pptx

Microsoft PowerPoint - 알고리즘_1주차_2차시.pptx Chapter 2 Secondary Storage and System Software References: 1. M. J. Folk and B. Zoellick, File Structures, Addison-Wesley. 목차 Disks Storage as a Hierarchy Buffer Management Flash Memory 영남대학교데이터베이스연구실

More information

SRC PLUS 제어기 MANUAL

SRC PLUS 제어기 MANUAL ,,,, DE FIN E I N T R E A L L O C E N D SU B E N D S U B M O TIO

More information

GNU/Linux 1, GNU/Linux MS-DOS LOADLIN DOS-MBR LILO DOS-MBR LILO... 6

GNU/Linux 1, GNU/Linux MS-DOS LOADLIN DOS-MBR LILO DOS-MBR LILO... 6 GNU/ 1, qkim@pecetrirekr GNU/ 1 1 2 2 3 4 31 MS-DOS 5 32 LOADLIN 5 33 DOS- LILO 6 34 DOS- 6 35 LILO 6 4 7 41 BIOS 7 42 8 43 8 44 8 45 9 46 9 47 2 9 5 X86 GNU/LINUX 10 1 GNU/, GNU/ 2, 3, 1 : V 11, 2001

More information

슬라이드 1

슬라이드 1 6-1 리스트 (list) 란순서를가진항목들을표현하는자료구조 리스트를구현하는두가지방법 배열 (array) 을이용하는방법 구현간단 삽입, 삭제시오버헤드 항목의개수제한 연결리스트 (linked list) 를이용하는방법 구현복잡 삽입, 삭제가효율적 크기가제한되지않음 6-2 객체 : n 개의 element 형으로구성된순서있는모임 연산 : add_last(list,

More information

10주차.key

10주차.key 10, Process synchronization (concurrently) ( ) => critical section ( ) / =>, A, B / Race condition int counter; Process A { counter++; } Process B { counter ;.. } counter++ register1 = counter register1

More information

Chap 6: Graphs

Chap 6: Graphs AOV Network 의표현 임의의 vertex 가 predecessor 를갖는지조사 각 vertex 에대해 immediate predecessor 의수를나타내는 count field 저장 Vertex 와그에부속된모든 edge 들을삭제 AOV network 을인접리스트로표현 count link struct node { int vertex; struct node

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

solution map_....

solution map_.... SOLUTION BROCHURE RELIABLE STORAGE SOLUTIONS ETERNUS FOR RELIABILITY AND AVAILABILITY PROTECT YOUR DATA AND SUPPORT BUSINESS FLEXIBILITY WITH FUJITSU STORAGE SOLUTIONS kr.fujitsu.com INDEX 1. Storage System

More information

Sharing Memory Between Drivers and Applications

Sharing Memory Between Drivers and Applications 본컬럼에대한모든저작권은 DevGuru에있습니다. 컬럼을타사이트등에기재및링크또는컬럼내용을인용시반드시출처를밝히셔야합니다. 컬럼들을 CD나기타매체로배포하고자할경우 DevGuru에동의를얻으셔야합니다. c DevGuru Corporation. All rights reserved 기타자세한질문사항들은웹게시판이나 support@devguru.co.kr 으로 문의하기바랍니다.

More information

Microsoft Word - ExecutionStack

Microsoft Word - ExecutionStack Lecture 15: LM code from high level language /* Simple Program */ external int get_int(); external void put_int(); int sum; clear_sum() { sum=0; int step=2; main() { register int i; static int count; clear_sum();

More information

교육지원 IT시스템 선진화

교육지원 IT시스템 선진화 Module 16: ioctl 을활용한 LED 제어디바이스드라이버 ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) 조윤석 전산전자공학부 주차별목표 ioctl() 을활용법배우기 커널타이머와 ioctl 을활용하여 LED 제어용디바이스드라이브작성하기 2 IOCTL 을이용한드라이버제어 ioctl() 함수활용 어떤경우에는읽는용도로만쓰고,

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

<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 - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

Chap 6: Graphs

Chap 6: Graphs 5. 작업네트워크 (Activity Networks) 작업 (Activity) 부분프로젝트 (divide and conquer) 각각의작업들이완료되어야전체프로젝트가성공적으로완료 두가지종류의네트워크 Activity on Vertex (AOV) Networks Activity on Edge (AOE) Networks 6 장. 그래프 (Page 1) 5.1 AOV

More information

02장.배열과 클래스

02장.배열과 클래스 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

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

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

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

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

03_queue

03_queue Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,

More information

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt 포인터 1 포인터란? 포인터 메모리의주소를가지고있는변수 메모리주소 100번지 101번지 102번지 103번지 int theage (4 byte) 변수의크기에따라 주로 byte 단위 주소연산자 : & 변수의주소를반환 메모리 2 #include list 8.1 int main() using namespace std; unsigned short

More information

Microsoft PowerPoint - Chapter_09.pptx

Microsoft PowerPoint - Chapter_09.pptx 프로그래밍 1 1 Chapter 9. Structures May, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 구조체의개념 (1/4) 2 (0,0) 구조체 : 다양한종류의데이터로구성된사용자정의데이터타입 복잡한자료를다루는것을편하게해줌 예 #1: 정수로이루어진 x,

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

7장. 교착상태(deadlock)

7장. 교착상태(deadlock) 11 장. 파일시스템구현 목표 local 파일시스템및디렉토리구조의구현을설명 remote 파일시스템구현을설명 블록할당과자유블록알고리즘논의 2 11.1 File-System 구조 File system 은보조저장장치 ( 디스크 ) 에위치. 블록단위전송 I/O 효율성향상 block size: one or more sectors sector size: 32 4KB (usually

More information

untitled

untitled Memory leak Resource 力 金 3-tier 見 Out of Memory( 不 ) Memory leak( 漏 ) 狀 Application Server Crash 理 Server 狀 Crash 類 JVM 說 例 行說 說 Memory leak Resource Out of Memory Memory leak Out of Memory 不論 Java heap

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍 C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct

More information

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

More information

Chap 6: Graphs

Chap 6: Graphs 그래프표현법 인접행렬 (Adjacency Matrix) 인접리스트 (Adjacency List) 인접다중리스트 (Adjacency Multilist) 6 장. 그래프 (Page ) 인접행렬 (Adjacency Matrix) n 개의 vertex 를갖는그래프 G 의인접행렬의구성 A[n][n] (u, v) E(G) 이면, A[u][v] = Otherwise, A[u][v]

More information

Figure 5.01

Figure 5.01 Chapter 4: Threads Yoon-Joong Kim Hanbat National University, Computer Engineering Department Chapter 4: Multithreaded Programming Overview Multithreading Models Thread Libraries Threading Issues Operating

More information

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을 (structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined

More information

제1장 Unix란 무엇인가?

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

More information