Microsoft PowerPoint - Chapter_03.pptx
|
|
- 영진 곽
- 5 years ago
- Views:
Transcription
1 1 Memory Management April, 216 Dept. of software Dankook University
2 Program, Process & Virtual Address 2 32bit 64bit 4GB 3GB stack 16EB 128TB Kernel Space heap User Space data text B B
3 가상주소확인 C 프로그램에서본태스크이미지 : 주소출력 #include <stdlib.h> int glob1, glob2; int func2() { int f2_local1, f2_local2; printf("func2 local: n t%p, n t%p n", &f2_local1, &f2_local2); } int func1() { int f1_local1, f1_local2; printf("func1 local: n t%p, n t%p n", &f1_local1, &f1_local2); func2(); } main() { int m_local1, m_local2; int *dynamic_addr; printf("main local: n t%p, n t%p n", &m_local1, &m_local2); func1(); dynamic_addr = malloc(16); printf("dynamic: n t%p n", dynamic_addr); printf("global: n t%p, n t%p n", &glob2, &glob1); printf("functions: n t%p, n t%p, n t%p n", main, func1, func2); } 3
4 가상주소확인결과 4 C 프로그램에서본태스크이미지 : 주소출력결과 xbfffec14 xbfffec1 xbfffebf4 xbfffebf xbfffebe4 xbfffebe stack for main stack for func1 stack for func2 x8496c8 x x84967 x8483a1 x84837c x84835c heap data text for main text for func1 text for func2
5 가상메모리관리구조 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 메모리관리기법 6 물리메모리관리 할당 / 해제기법 가상메모리관리 할당 / 해제기법 물리메모리와가상메모리 연결혹은변환기법
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 9
10 Bank and Node 1 UMA Bus Bus Bank Bank NUMA Bank struct pglist_data contig_page_data Node struct pglist_data *pgdat_list[ ] typedef struct pglist_data { struct zone node_zones[max_nr_zones]; struct zonelist node_zonelists[gfp_zonetypes]; int nr_zones; struct page *node_mem_map; struct bootmem_data *bdata; unsigned long node_start_pfn; unsigned long node_present_pages; unsigned long node_spanned_pages; int node_id; wait_queue_head_t kswapd_wait; wait_queue_head_t } pg_data_t; pfmemalloc_wait;
11 NODE 자료구조 11 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 page 배열의첫번째 page 임. // 이는전역배열인 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 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 }pg_data_t;
12 NODE 자료구조확인 12 xa 실험을진행하고있는보드의물리메모리시작주소
13 Node and Zone 13 ZONE_DM ZONE_NOR A MAL ZONE_DM X86 System 에서는 A32 896M end Node ZONE_MOVA BLE ZONE ZONE ZONE ZONE ZONE_HIGHM EM ZONE_DMA, 32 ~ 16M ZONE_NORMAL 16 ~ ZONE_HIGHMEM 896 ~ struct zone { unsigned long watermark[nr_wmark]; unsigned long lowmem_reserve[max_nr_zones]; unsigned long dirty_balance_reserve; int node; unsigned long min_unmapped_pages; unsigned long min_slab_pages; spinlock_t lock; struct free_area free_area[max_order]; spinlock_t lru_lock; struct lruvec lruvec; atomic_long_t inactive_age; unsigned long pages_scanned; unsigned long flags; atomic_long_t vm_stat[nr_vm_zone_stat_items]; unsigned int inactive_ratio; wait_queue_head_t * wait_table; unsigned long wait_table_hash_nr_entries; unsigned long wait_table_bits; struct per_cpu_pageset *pageset; struct pglist_data *zone_pgdat; struct page *zone_mem_map; unsigned long zone_start_pfn; char *name; unsigned long spanned_pages; unsigned long present_pages; }
14 Kernel Address Space(1/13) 14 Physical Address S/W CPU Data
15 Kernel Address Space(2/13) 15 Physical Address Linux CPU Data
16 Kernel Address Space(3/13) 16 Physical Address Linux CPU Data 1M Physical Memory Linux zimage 1G
17 Kernel Address Space(4/13) 17 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory 1M Linux zimage
18 Kernel Address Space(5/13) 18 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory Kernel 이사용 3G User APP 가사용 1M Linux zimage
19 Kernel Address Space(6/13) 19 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory 3G 1M Linux zimage
20 Kernel Address Space(7/13) 2 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory Paging 3G 1M Linux zimage
21 Kernel Address Space(8/13) 21 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory 3G 1M Linux zimage
22 Kernel Address Space(9/13) 22 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory 3G Kernel have no mm_struct! 1M Linux zimage
23 Kernel Address Space(1/13) 23 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
24 Kernel Address Space(11/13) 24 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory 이제 Kernel 도 Physical Memory 에접근할수있게되었습니다. Linux Kernel 은 OS 입니다. 모든 Physical Memory 에접근해야합니다. 3G 1M Linux zimage
25 Kernel Address Space(12/13) 25 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory 1:1 매핑은어떨까요? 문제점은? 3G 1M Linux zimage
26 Kernel Address Space(13/13) 26 Physical Address Linux CPU Data 4G Virtual Address Space 1G Physical Memory 896M 896M 까지만 1:1 매핑하고 그이상의메모리는임시로매핑하여사용 3G 1M Linux zimage
27 ZONE 자료구조 27 typedef struct zone_struct{ spinlock_t }zone_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 의크기
28 ZONE 의 watermarks 28 Zone Watermarks
29 Watermarks 계산 29 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)
30 ZONE 과 PageFrame 3 Page frame Page frame Page frame Page frame Page frame Page frame ZONE Page frame Page frame Page frame Page frame Page frame Page frame Page frame Page frame 각 NODE 의모든 page 구조체는보통 ZONE_NORMAL 의시작부분 ( 혹은커널이올라오기위해예약해놓은메모리바로다음 ) 위치에있는전역배열인 mem_map 에유지된다 Page frame struct page { page_flags_t flags; union { struct address_space *mapping; void *s_mem; } struct { union { pgoff_t index; void *freelist; bool pfmemalloc }; union{ } } union { struct list_head lru; struct { struct page *next; int pages; pobjects; } struct slab *slab_page; struct rcu_head rcu_head; } #if defined(want_page_virtual) void *virtual; #endif /* WANT_PAGE_VIRTUAL */ };
31 Page Frame 자료구조 31 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_space와연결되어있다. // 만약이 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시켜주는필드이다.
32 Page Frame 자료구조 32 atomic_t count; // page의참조횟수이다. 만약 이되면이페이지는 free될것이다. // 그보다크다면, 하나이상의프로세스에서사용중이거나, // I/O를기다리기위한작업등으로인해커널내에서사용중임을나타낸다. unsigned long flags; // page의상태를나타내는flags이다. 이는 <linux/mm.h> 내에모두정의되어있고, 표 2.1에나열해놓았다. // 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;
33 ZONE wait queue 33 Process A Want to Use Page wate_on_page() wate_on_page() UnlockPage() unlock_page() Wait Queue ZONE Page frame Page frame Page frame Page frame Page frame Page frame Page frame Page frame Page frame Page frame Page frame Page frame Page frame Page Page frame frame
34 Buddy Allocator 34 To reduce external fragmentation Fast allocation and de-allocation of pages 연속적인 page( block ) 단위별로관리 1, 2, 4, 8.. pages each one block
35 free_area_t 구조체 35 /* ~/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;
36 Data structure 36 free_area.[order].free_list 특정크기의 free page block 들의이중연결리스트 free_area.[order].map ((number of pages) -1 ) >> (order + 4)) + 1bytes 한비트가하나의버디의상태를나타낸다
37 Memory allocation page 요청 alloc 13. free free_area.free_list free_area[order].map Physical Memory Pages order() order(1) order(2) order(3) > 1
38 Memory allocation page 요청 alloc 13. free free_area.free_list free_area[order].map Physical Memory Pages order() order(1) order(2) order(3) > 1 1 ->
39 Memory de-allocation 번 page 해제요청 alloc index = page_idx >> (order + 1) => 11 >> ( + 1 ) = 5 free free_area.free_list 5 1 free_area[order].map index >>= Physical Memory Pages order() order(1) order(2) order(3) > 1 -> 1-> -> 1
40 Buddy 관련함수 4
41 Slab Allocator 41 슬랩할당자 버디알고리즘은적은메모리할당엔부적절 같은크기의메모리공간에대한할당을반복하는경향있으므로캐시개념도입 캐시 : 객체의모음 같은크기메모리공간의창고슬랩 : 캐시가들어있는주메모리영역을나눈것 (/proc/slabinfo) 연속된 PF하나이상으로구성됨 할당한객체와여유객체를모두포함 빈슬랩의 PF스스로해제안함
42 Slab Allocator 구조 42 kmem_cache cache_cache cache cache cache kmem_cache_node slabs_full slabs_free slabs_partial slab slab slab slab (full) (full) (full) slab (free) slab (partial) slab (partial) object object
43 슬랩관련함수 43
44 GFP_MASK 44
45 가상주소공간할당 / 해제 45 일부가상주소공간 = region = 영역 = 구간 = vm_area_struct 메모리구역겹치는일은없음 인접한두구역은접근권한일치시합침
46 Creating a memory region ex. 46 case 1 arch_get_unmapped_area if addr!= null if addr + len < vma->start VMA. 1G next len addr VMA next VMA. 3G
47 Creating a memory region ex. 47 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
48 Creating a memory region ex. 48 do_mmap_pgoff. 1G VMA next next new VMA len addr next VMA next VMA. 3G
49 Merging contiguous region 49 do_mmap_pgoff merge-able. 1G VMA next len addr next VMA next VMA. 3G
50 Remapping and Moving a memory region 5 do_mmap_pgoff memory region growing or shrink find another region VMA. 1G next next VMA VMA len new VMA. 3G
51 Delete a memory region 51 do_munmap. 1G VMA next VMA next VMA. 3G
52 Delete a memory region 52 do_munmap. 1G VMA next VMA next next next new VMA VMA. 3G
53 간단한 ELF 구조 53 test.c 의컴파일결과 : ELF format gcc test.c e_ident e_type e_machine e_phnum e_flags ELF header phdr 1 phdr 2. phdr n Section 1 Section 2. Section n p_flags p_offset p_vaddr p_filesz p_memsz p_types a.out : (ELF format) /*include/linux/elf.h */
54 가상메모리와 ELF 파일 54 가상메모리와 ELF format 의대응 disk virtual memory a.out 4 GB kernel kernel stack text ELF header phdrs 3 GB stack kernel data kernel text data 28 KB data stack 12 KB KB text page
55 가상메모리와태스크실행 55 페이지시스템 : 태스크로딩 ( execve() ) test.exe 라는프로그램을수행시킨다고가정 (ELF format) 이응용의 text 는 12KB, data 는 8KB, 초기 stack 은 4KB 로가정 이응용은 malloc 을사용하지않음 커널 test.exe stack data inode Disk t1 t3 t2 d1 d2 t1 t2 d1 pf5 pf3 pf2 text virtual memory test.exe 가수행되려면디스크에서메모리로이동되어야함 physical memory
56 태스크와페이지테이블 56 페이지시스템 : 주소변환 디스크내용을물리메모리에로딩 (loading) 하면서위치정보기록 page page frame t1 pf3 t2 pf5 t3 - d1 pf2 d2 - s1 pf6 Page table t1 s1 t2 d1 pf6 pf5 pf3 pf2 physical memory 태스크자료구조 (task struct) 에서 page table 을관리 : 메모리문맥 위의구조에서프로그램이가상주소 1 번지에접근하면메모리어디에접근하는가? 가상주소 5 번지에접근하면? 또한가상주소 9 에접근하면?
57 페이지폴트 57 페이지시스템 : 페이지부재결함 페이지프레임에존재하지않는페이지를접근할때 task struct t1 pf3 t2 pf5 t3 pf4 - d1 pf2 d2 - s1 pf6 Page table test.exe t1 s1 t2 t3 d1 physical memory pf6 pf5 pf4 pf3 pf2 inode Disk t3 t1 t2 d1 d2
58 Linux 의 Page Table Management 전체구조 58
59 Linux 의 PGD 59 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 을유발하는단점이있음 )
60 task_struct mm Linux 의 PGD, PMD, PTE mm_struct pgd 6 Physical Memory Page Frame Page Frame Page Frame Page Frame Page Frame pud_t pgd_t pmd_t pte_t pud_t pgd_t pmd_t pte_t pud_t pgd_t pmd_t pte_t pud_t pgd_t pmd_t pte_t pud_t PUD pgd_t pmd_t pte_t PGD PMD PTE Swap out 된경우에는? Swap entry 가 PTE 에저장되어있음 Fault 맞으면이 swap entry 를이용해 do_swap_page() 함수가 page 를처리해줌
61 주소변환을위한매크로 61
62 주소변환과정의이해 62 /* mm/memory.c */ static struct page * follow_page(struct vm_area_struct *vma, unsigned long address, unsigned int flags, unsigned int *page_mask) { pgd_t *pgd; pud_t *pud; pmd_t *pmd; pte_t *ptep, pte; pgd = pgd_offset(mm, address); if( pgd_none(*pgd) pgd_bad(*pgd)) pud = pud_offset(pgd, address); if( pud_nond(*pud) ) pmd = pmd_offset(pgd, address); if( pmd_none(*pmd) pmd_bad(*pmd)) goto out; goto out; goto out; } return follow_page_pte(vma, address, pmd, flags);
63 태스크와가상주소공간 63 태스크의메모리관리전체구조 (global view) task_struct mm mm_struct map_count pgd mmap vm_area_struct vm_end vm_start vm_flags vm_file vm_offset vm_ops vm_next 가상메모리공간 vm area (data or parts of data) vm_area_struct vm_end vm_start vm_flags vm_file vm_offset vm_ops vm_next vm_area (text)
64 mm_struct 와가상주소공간구조 64 mm_struct 자료구조분석 include/linux/mm_types.h struct mm_struct { struct vm_area_struct *mmap; struct rb_root mm_rb; struct vm_area_struct *mmap_cache; atomic_t mm_users, mm_count pgd_t *pgd; int map_count; struct semaphore mmap_sem; mm_context_t context; 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 total_vm, locked_vm, def_flags; } include/x86/include/asm/pgtable_types.h typedef struct {pgdval_t pgd;} pgd_t; env_end arg_end arg_start start_stack brk end_data end_code start_code include/x86/asm/pgtable_64_types.h typedef struct {pgdval_t pgd;} pgd_t; kernel stack bss data text xffffffff xc x
65 vm_area_struct 자료구조 65 vm_area_struct 자료구조분석 include/linux/mm.h struct vm_area_struct { struct mm_struct *vm_mm; unsigned long vm_start, vm_end; struct vm_area_struct *vm_next pgprot_t vm_page_prot; unsigned short vm_flags; short vm_avl_height; struct vm_area_struct *vm_avl_left; struct vm_area_struct *vm_avl_right; struct vm_area_struct *vm_next_share; struct vm_operations_struct *vm_ops; unsigned long vm_offset; struct file *vm_file; unsigned long vm_pte; /* for SVR4 SM */ } Virtual Memory Area PAGE_SHARED (COPY, READONLY, KERNEL) open(vm_area) close(vm_area) do_mmap(file, addr, len, prot, flags, off) unmap() protect() nopage() wppage() swapout() swapin()
66 Memory Region 66 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
67 부터도입된 4 단계페이징 (x86_64 기준 ) 67 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)
68 커널의가상주소사용 (32bit 처리기기준 ) 68 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
69 커널의가상주소사용 (64bit 처리기기준 ) 69 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
70 Linux 커널메모리관리함수 7 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
71 VFS inode object Page Cache 관리자료구조 /* ~/include/linux/fs.h */ struct inode { struct address_space *i_mapping; struct address_space i_data; }; inode 구조체가저장되어있는 page owner 의 address_space 구조체를가리킴 /* ~/include/linux/fs.h */ struct address_space { struct inode *host; const struct address_space_operations *a_ops; struct radix_tree_root page_tree; }; 71 Radix tree /* ~/lib/radix-tree.c */ struct radix_tree_node { unsigned int height; unsigned int count; struct rcu_head rcu_head; void *slots[radix_tree_map_size]; unsigned long tags[radix_tree_max_tags][radix_tree_tag_longs]; }; /* ~/lib/radix-tree.c */ struct radix_tree_root { unsigned int height; gfp_t gfp_mask; struct radix_tree_node *rnode; }; Memory /* ~/include/linux/mm_types.h */ struct page { union { struct { unsigned long private; struct address_space *mapping; }; }; union{ pgoff_t index; void *freelist; }; }; page(4kb) 1KB 1KB 1KB 1KB /* ~/include/linux/buffer_head.h */ struct buffer_head { struct buffer_head *b_this_page; struct page *b_page; char *b_data; }; struct buffer_head struct buffer_head struct buffer_head Owner 의 view 에서페이지크기단위의 offset
72 Page Cache related Interfaces 72 Radix Tree find_get_page(); add_to_page_cache(); remove_from_page_cache(); read_cache_page(); // 메모리상의내용을최신으로유지 Buffer Head grow_buffers(); try_to_release_page(); find_get_block(); // 찾는내용이없으면 NULL return get_blk(); // 찾는내용이없으면이를위한자료구조만들고 return bread(); // 찾는내용이없으면이를위한자료구조만들고필요시 I/O 수행
73 Page Cache Reclaim 73 When? The page cache gets too full and more pages are needed Too many dirty pages Too much time has elapsed since a page has stayed dirty The flush request are invoked Parameters Dirty background threshold 보통약 4%(/proc/sys/vm/dirty_ration) Dirty writeback centisecs 보통 5 Pdflush daemon Evicting background_writeout() Flush 대상 dirty page 주기적인탐색 wb_kupdate() 너무오래된 dirty 탐색 submit_bh(); suber_block 은 5 초 일반 data page 는 3 초 ll_rw_block(); // 불연속블록에대한 I/O 처리
Microsoft PowerPoint - LN_7_Linux_MM.ppt [호환 모드]
프로젝트 1 Memory Management 단국대학교컴퓨터학과 29 백승재 ibanez1383@dankook.ac.kr k k http://embedded.dankook.ac.kr/~ibanez1383 강의목표 리눅스의물리메모리관리기법이해 할당 / 해제기법 리눅스의가상메모리관리기법이해 할당 / 해제기법 리눅스의물리메모리와가상메모리연결 / 혹은변환기법이해 가상메모리개념
More information리눅스커널-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 informationEmbeddedsystem(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 informationMicrosoft 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슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More information임베디드시스템설계강의자료 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 informationChapter #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 information6주차.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 information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More information61 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슬라이드 1
/ 유닉스시스템개요 / 파일 / 프로세스 01 File Descriptor file file descriptor file type unix 에서의파일은단지바이트들의나열임 operating system 은파일에어떤포맷도부과하지않음 파일의내용은바이트단위로주소를줄수있음 file descriptor 는 0 이나양수임 file 은 open 이나 creat 로 file
More informationK&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 informationMicrosoft 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강의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 informationA 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이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2
제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.
More information<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 informationPoison 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 informationChap06(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 informationPowerPoint 프레젠테이션
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 informationPowerPoint 프레젠테이션
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 informationuntitled
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 informationA 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 informationChapter 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 informationchap 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 informationFrama-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휠세미나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 information1217 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 informationDeok9_Exploit Technique
Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security
More informationMicrosoft 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 informationMicrosoft 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<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 informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More informationChapter 4. LISTS
연결리스트의응용 류관희 충북대학교 1 체인연산 체인을역순으로만드는 (inverting) 연산 3 개의포인터를적절히이용하여제자리 (in place) 에서문제를해결 typedef struct listnode *listpointer; typedef struct listnode { char data; listpointer link; ; 2 체인연산 체인을역순으로만드는
More informationC# 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 informationPowerPoint 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 informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More informationOPCTalk 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 informationsolution 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 informationGNU/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¼ÒÇÁÆ®-12È£-ÃÖÁ¾¿Ï¼º
IT World 2008. 05 No.12 Focus Interview Best Practice Open Mind 2008. 05 No.12 Contents Special Editorial Best Practice 04 08 12 16 20 22 24 28 30 Insight 34 36 40 42 46 Tech Guide 50 56 62 News & Trend
More informationMicrosoft 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 informationLab 4. 실습문제 (Circular singly linked list)_해답.hwp
Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular
More informationMicrosoft 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 informationhlogin2
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 informationMicrosoft 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 informationPCServerMgmt7
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 informationXen으로 배우는 가상화 기술의 이해 - CPU 가상화
Hanbit ebook Realtime 17 Xen으로 배우는 가상화 기술의 이해 CPU 가상화 박은병, 김태훈, 이상철, 문대혁 지음 Xen으로 배우는 가상화 기술의 이해 CPU 가상화 Xen으로 배우는 가상화 기술의 이해 - CPU 가상화 초판발행 2013년 2월 25일 지은이 박은병, 김태훈, 이상철, 문대혁 / 펴낸이 김태헌 펴낸곳 한빛미디어(주) /
More informationSharing Memory Between Drivers and Applications
본컬럼에대한모든저작권은 DevGuru에있습니다. 컬럼을타사이트등에기재및링크또는컬럼내용을인용시반드시출처를밝히셔야합니다. 컬럼들을 CD나기타매체로배포하고자할경우 DevGuru에동의를얻으셔야합니다. c DevGuru Corporation. All rights reserved 기타자세한질문사항들은웹게시판이나 support@devguru.co.kr 으로 문의하기바랍니다.
More informationChap 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 informationPowerPoint 프레젠테이션
(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 informationMicrosoft PowerPoint APUE(Intro).ppt
컴퓨터특강 () [Ch. 1 & Ch. 2] 2006 년봄학기 문양세강원대학교컴퓨터과학과 APUE 강의목적 UNIX 시스템프로그래밍 file, process, signal, network programming UNIX 시스템의체계적이해 시스템프로그래밍능력향상 Page 2 1 APUE 강의동기 UNIX 는인기있는운영체제 서버시스템 ( 웹서버, 데이터베이스서버
More informationMicrosoft 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슬라이드 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 informationSRC 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 information10주차.key
10, Process synchronization (concurrently) ( ) => critical section ( ) / =>, A, B / Race condition int counter; Process A { counter++; } Process B { counter ;.. } counter++ register1 = counter register1
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More informationMicrosoft PowerPoint - chap11-포인터의활용.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 informationchap7.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 informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More informationMicrosoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt
변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short
More informationuntitled
Block Device Driver in Linux Embedded System Lab. II Embedded System Lab. II 2 Define objective of applications using device Study Hardware manual (Registers) (vector number) Understand interface to related
More information<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 informationMicrosoft 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 informationChap 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 informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
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커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서
커알못의 커널 탐방기 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 information03_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 informationPowerPoint Template
18 동적할당과고급처리 인터넷정보과 1 2/19 동적할당 목적 다음과같은일반변수의선언과사용은변수를정적 (static) 으로사용 int a = 10; 메모리사용예측이부정확한경우는충분한메모리를미리확보해야하는것은비효율 동적 (dynamic) 메모리할당 (Memory Allocation) 동적인메모리할당을위해서는함수 malloc() 을이용, 메모리공간을확보 함수 malloc()
More informationMicrosoft 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 informationMicrosoft PowerPoint - 알고리즘_5주차_1차시.pptx
Basic Idea of External Sorting run 1 run 2 run 3 run 4 run 5 run 6 750 records 750 records 750 records 750 records 750 records 750 records run 1 run 2 run 3 1500 records 1500 records 1500 records run 1
More informationChapter 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 informationadfasdfasfdasfasfadf
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슬라이드 1
정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함
More informationKNK_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<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>
쉽게풀어쓴 C 언어 Express 제 17 장동적메모리와연결리스트 이번장에서학습할내용 동적메모리할당의이해 동적메모리할당관련함수 연결리스트 동적메모리할당에대한개념을이해하고응용으로연결리스트를학습합니다. 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것
More informationuntitled
int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015
More information<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슬라이드 1
6-1 리스트 (list) 란순서를가진항목들을표현하는자료구조 리스트를구현하는두가지방법 배열 (array) 을이용하는방법 구현간단 삽입, 삭제시오버헤드 항목의개수제한 연결리스트 (linked list) 를이용하는방법 구현복잡 삽입, 삭제가효율적 크기가제한되지않음 6-2 객체 : n 개의 element 형으로구성된순서있는모임 연산 : add_last(list,
More informationPowerPoint 프레젠테이션
@ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program
More informationchap10.PDF
10 C++ Hello!! C C C++ C++ C++ 2 C++ 1980 Bell Bjarne Stroustrup C++ C C++ C, C++ C C 3 C C++ (prototype) (type checking) C C++ : C++ 4 C C++ (prototype) (type checking) [ 10-1] #include extern
More informationSomething that can be seen, touched or otherwise sensed
Something that can be seen, touched or otherwise sensed Things about an object Weight Height Material Things an object does Pen writes Book stores words Water have Fresh water Rivers Oceans have
More informationChap 6: Graphs
AOV Network 의표현 임의의 vertex 가 predecessor 를갖는지조사 각 vertex 에대해 immediate predecessor 의수를나타내는 count field 저장 Vertex 와그에부속된모든 edge 들을삭제 AOV network 을인접리스트로표현 count link struct node { int vertex; struct node
More informationNo Slide Title
Copyright, 2001 Multimedia Lab., CH 3. COM object (In-process server) Eun-sung Lee twoss@mmlab.net Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea 0. Contents 1.
More informationMicrosoft PowerPoint - Chapter_02.pptx
1 Task Management March, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj Program & Process 2 Task, Process and Thread 3 Process Thread Task, Process and Thread 4 Process
More information임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 시스템호출개요 리눅스에서는사용자공간과커널공간을구분 사용자프로그램은사용자모드, 운영체제는커널모드에서수행 커널공간에대한접근은커널 ( 특권, priviledged) 모드에서가능 컴퓨팅자원 (CPU, memory, I/O 등 ) 을안전하게보호 커널수행을안전하게유지
More informationPowerPoint 프레젠테이션
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 informationMicrosoft 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 informationMicrosoft 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 informationPowerPoint 프레젠테이션
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[ 마이크로프로세서 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구조체정의 자료형 (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 information13주-14주proc.PDF
12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float
More informationbn2019_2
arp -a Packet Logging/Editing Decode Buffer Capture Driver Logging: permanent storage of packets for offline analysis Decode: packets must be decoded to human readable form. Buffer: packets must temporarily
More informationuntitled
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 informationMPLAB C18 C
MPLAB C18 C MPLAB C18 MPLAB C18 C MPLAB C18 C #define START, c:\mcc18 errorlevel{0 1} char isascii(char ch); list[list_optioin,list_option] OK, Cancel , MPLAB IDE User s Guide MPLAB C18 C
More informationDeok9_PE Structure
PE Structure CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 1. PE > 1) PE? 2) PE 3) PE Utility
More information06장.리스트
---------------- DATA STRUCTURES USING C ---------------- CHAPTER 리스트 1/28 리스트란? 리스트 (list), 선형리스트 (linear list) 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : ( ㄱ, ㄴ,, ㅎ ) 카드 :
More information컴파일러
YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",
More information