50 #define TASK_STOPPED 4 // 进程已停止 #ifndef NULL 53 #define NULL ((void *) 0) // 定义 NULL 为空指针 54 #endif 55 // 复制进程的页目录页表 Linus 认为这是内核中最复杂的函数之一 (

Size: px
Start display at page:

Download "50 #define TASK_STOPPED 4 // 进程已停止 #ifndef NULL 53 #define NULL ((void *) 0) // 定义 NULL 为空指针 54 #endif 55 // 复制进程的页目录页表 Linus 认为这是内核中最复杂的函数之一 ("

Transcription

1 程序 linux/include/linux/sched.h 1 #ifndef _SCHED_H 2 #define _SCHED_H 3 4 #define HZ 100 // 定义系统时钟滴答频率 (1 百赫兹, 每个滴答 10ms) 5 6 #define NR_TASKS 64 // 系统中同时最多任务 ( 进程 ) 数 7 #define TASK_SIZE 0x // 每个任务的长度 (64MB) 8 #define LIBRARY_SIZE 0x // 动态加载库长度 (4MB) 9 10 #if (TASK_SIZE & 0x3fffff) 11 #error "TASK_SIZE must be multiple of 4M" // 任务长度必须是 4MB 的倍数 12 #endif #if (LIBRARY_SIZE & 0x3fffff) 15 #error "LIBRARY_SIZE must be a multiple of 4M" // 库长度也必须是 4MB 的倍数 16 #endif #if (LIBRARY_SIZE >= (TASK_SIZE/2)) 19 #error "LIBRARY_SIZE too damn big!" // 加载库的长度不得大于任务长度的一半 20 #endif #if (((TASK_SIZE>>16)*NR_TASKS)!= 0x10000) 23 #error "TASK_SIZE*NR_TASKS must be 4GB" // 任务长度 * 任务总个数必须为 4GB 24 #endif 25 // 在进程逻辑地址空间中动态库被加载的位置 (60MB 处 ) 26 #define LIBRARY_OFFSET (TASK_SIZE - LIBRARY_SIZE) 27 // 下面宏 CT_TO_SECS 和 CT_TO_USECS 用于把系统当前嘀嗒数转换成用秒值加微秒值表示 28 #define CT_TO_SECS(x) ((x) / HZ) 29 #define CT_TO_USECS(x) (((x) % HZ) * /HZ) #define FIRST_TASK task[0] // 任务 0 比较特殊, 所以特意给它单独定义一个符号 32 #define LAST_TASK task[nr_tasks-1] // 任务数组中的最后一项任务 #include <linux/head.h> 35 #include <linux/fs.h> 36 #include <linux/mm.h> 37 #include <sys/param.h> 38 #include <sys/time.h> 39 #include <sys/resource.h> 40 #include <signal.h> #if (NR_OPEN > 32) 43 #error "Currently the close-on-exec-flags and select masks are in one long, max 32 files/proc" 44 #endif 45 // 这里定义了进程运行时可能处的状态 46 #define TASK_RUNNING 0 // 进程正在运行或已准备就绪 47 #define TASK_INTERRUPTIBLE 1 // 进程处于可中断等待状态 48 #define TASK_UNINTERRUPTIBLE 2 // 进程处于不可中断等待状态, 主要用于 I/O 操作等待 49 #define TASK_ZOMBIE 3 // 进程处于僵死状态, 已经停止运行, 但父进程还没发信号

2 50 #define TASK_STOPPED 4 // 进程已停止 #ifndef NULL 53 #define NULL ((void *) 0) // 定义 NULL 为空指针 54 #endif 55 // 复制进程的页目录页表 Linus 认为这是内核中最复杂的函数之一 ( mm/memory.c, 105 ) 56 extern int copy_page_tables(unsigned long from, unsigned long to, long size); // 释放页表所指定的内存块及页表本身 ( mm/memory.c, 150 ) 57 extern int free_page_tables(unsigned long from, unsigned long size); 58 // 调度程序的初始化函数 ( kernel/sched.c, 385 ) 59 extern void sched_init(void); // 进程调度函数 ( kernel/sched.c, 104 ) 60 extern void schedule(void); // 异常 ( 陷阱 ) 中断处理初始化函数, 设置中断调用门并允许中断请求信号 ( kernel/traps.c, 181 ) 61 extern void trap_init(void); // 显示内核出错信息, 然后进入死循环 ( kernel/panic.c, 16 ) 62 extern void panic(const char * str); // 往 tty 上写指定长度的字符串 ( kernel/chr_drv/tty_io.c, 290 ) 63 extern int tty_write(unsigned minor,char * buf,int count); typedef int (*fn_ptr)(); // 定义函数指针类型 66 // 下面是数学协处理器使用的结构, 主要用于保存进程切换时 i387 的执行状态信息 67 struct i387_struct { 68 long cwd; // 控制字 (Control word) 69 long swd; // 状态字 (Status word) 70 long twd; // 标记字 (Tag word) 71 long fip; // 协处理器代码指针 72 long fcs; // 协处理器代码段寄存器 73 long foo; // 内存操作数的偏移位置 74 long fos; // 内存操作数的段值 75 long st_space[20]; /* 8*10 bytes for each FP-reg = 80 bytes */ 76 }; /* 8 个 10 字节的协处理器累加器 */ 77 // 任务状态段数据结构 78 struct tss_struct { 79 long back_link; /* 16 high bits zero */ 80 long esp0; 81 long ss0; /* 16 high bits zero */ 82 long esp1; 83 long ss1; /* 16 high bits zero */ 84 long esp2; 85 long ss2; /* 16 high bits zero */ 86 long cr3; 87 long eip; 88 long eflags; 89 long eax,ecx,edx,ebx; 90 long esp; 91 long ebp; 92 long esi; 93 long edi;

3 94 long es; /* 16 high bits zero */ 95 long cs; /* 16 high bits zero */ 96 long ss; /* 16 high bits zero */ 97 long ds; /* 16 high bits zero */ 98 long fs; /* 16 high bits zero */ 99 long gs; /* 16 high bits zero */ 100 long ldt; /* 16 high bits zero */ 101 long trace_bitmap; /* bits: trace 0, bitmap */ 102 struct i387_struct i387; 103 }; 104 // 下面是任务 ( 进程 ) 数据结构, 或称为进程描述符 // long state 任务的运行状态 (-1 不可运行,0 可运行 ( 就绪 ),>0 已停止 ) // long counter 任务运行时间计数 ( 递减 )( 滴答数 ), 运行时间片 // long priority 优先数 任务开始运行时 counter=priority, 越大运行越长 // long signal 信号位图, 每个比特位代表一种信号, 信号值 = 位偏移值 +1 // struct sigaction sigaction[32] 信号执行属性结构, 对应信号将要执行的操作和标志信息 // long blocked 进程信号屏蔽码 ( 对应信号位图 ) // // int exit_code 任务执行停止的退出码, 其父进程会取 // unsigned long start_code 代码段地址 // unsigned long end_code 代码长度 ( 字节数 ) // unsigned long end_data 代码长度 + 数据长度 ( 字节数 ) // unsigned long brk 总长度 ( 字节数 ) // unsigned long start_stack 堆栈段地址 // long pid 进程标识号 ( 进程号 ) // long pgrp 进程组号 // long session 会话号 // long leader 会话首领 // int groups[ngroups] 进程所属组号 一个进程可属于多个组 // task_struct *p_pptr 指向父进程的指针 // task_struct *p_cptr 指向最新子进程的指针 // task_struct *p_ysptr 指向比自己后创建的相邻进程的指针 // task_struct *p_osptr 指向比自己早创建的相邻进程的指针 // unsigned short uid 用户标识号 ( 用户 id) // unsigned short euid 有效用户 id // unsigned short suid 保存的用户 id // unsigned short gid 组标识号 ( 组 id) // unsigned short egid 有效组 id // unsigned short sgid 保存的组 id // long timeout 内核定时超时值 // long alarm 报警定时值 ( 滴答数 ) // long utime 用户态运行时间 ( 滴答数 ) // long stime 系统态运行时间 ( 滴答数 ) // long cutime 子进程用户态运行时间 // long cstime 子进程系统态运行时间 // long start_time 进程开始运行时刻 // struct rlimit rlim[rlim_nlimits] 进程资源使用统计数组 // unsigned int flags; 各进程的标志, 在下面第 149 行开始定义 ( 还未使用 ) // unsigned short used_math 标志 : 是否使用了协处理器 // // int tty 进程使用 tty 终端的子设备号 -1 表示没有使用 // unsigned short umask 文件创建属性屏蔽位

4 // struct m_inode * pwd 当前工作目录 i 节点结构指针 // struct m_inode * root 根目录 i 节点结构指针 // struct m_inode * executable 执行文件 i 节点结构指针 // struct m_inode * library 被加载库文件 i 节点结构指针 // unsigned long close_on_exec 执行时关闭文件句柄位图标志 ( 参见 include/fcntl.h) // struct file * filp[nr_open] 文件结构指针表, 最多 32 项 表项号即是文件描述符的值 // struct desc_struct ldt[3] 局部描述符表 0- 空,1- 代码段 cs,2- 数据和堆栈段 ds&ss // struct tss_struct tss 进程的任务状态段信息结构 // ====================================== 105 struct task_struct { 106 /* these are hardcoded - don't touch */ 107 long state; /* -1 unrunnable, 0 runnable, >0 stopped */ 108 long counter; 109 long priority; 110 long signal; 111 struct sigaction sigaction[32]; 112 long blocked; /* bitmap of masked signals */ 113 /* various fields */ 114 int exit_code; 115 unsigned long start_code,end_code,end_data,brk,start_stack; 116 long pid,pgrp,session,leader; 117 int groups[ngroups]; 118 /* 119 * pointers to parent process, youngest child, younger sibling, 120 * older sibling, respectively. (p->father can be replaced with 121 * p->p_pptr->pid) 122 */ 123 struct task_struct *p_pptr, *p_cptr, *p_ysptr, *p_osptr; 124 unsigned short uid,euid,suid; 125 unsigned short gid,egid,sgid; 126 unsigned long timeout,alarm; 127 long utime,stime,cutime,cstime,start_time; 128 struct rlimit rlim[rlim_nlimits]; 129 unsigned int flags; /* per process flags, defined below */ 130 unsigned short used_math; 131 /* file system info */ 132 int tty; /* -1 if no tty, so it must be signed */ 133 unsigned short umask; 134 struct m_inode * pwd; 135 struct m_inode * root; 136 struct m_inode * executable; 137 struct m_inode * library; 138 unsigned long close_on_exec; 139 struct file * filp[nr_open]; 140 /* ldt for this task 0 - zero 1 - cs 2 - ds&ss */ 141 struct desc_struct ldt[3]; 142 /* tss for this task */ 143 struct tss_struct tss; 144 }; /* 147 * Per process flags 148 */

5 /* 每个进程的标志 */ /* 打印对齐警告信息 还未实现, 仅用于 486 */ 149 #define PF_ALIGNWARN 0x /* Print alignment warning msgs */ 150 /* Not implemented yet, only for 486*/ /* 153 * INIT_TASK is used to set up the first task table, touch at 154 * your own risk!. Base=0, limit=0x9ffff (=640kB) 155 */ /* * INIT_TASK 用于设置第 1 个任务表, 若想修改, 责任自负! * 基址 Base = 0, 段长 limit = 0x9ffff(=640kB) */ // 对应上面任务结构的第 1 个任务的信息 156 #define INIT_TASK \ 157 /* state etc */ { 0,15,15, \ // state, counter, priority 158 /* signals */ 0,{{},},0, \ // signal, sigaction[32], blocked 159 /* ec,brk... */ 0,0,0,0,0,0, \ // exit_code,start_code,end_code,end_data,brk,start_stack 160 /* pid etc.. */ 0,0,0,0, \ // pid, pgrp, session, leader 161 /* suppl grps*/ {NOGROUP,}, \ // groups[] 162 /* proc links*/ &init_task.task,0,0,0, \ // p_pptr, p_cptr, p_ysptr, p_osptr 163 /* uid etc */ 0,0,0,0,0,0, \ // uid, euid, suid, gid, egid, sgid 164 /* timeout */ 0,0,0,0,0,0,0, \ // alarm,utime,stime,cutime,cstime,start_time,used_math 165 /* rlimits */ { {0x7fffffff, 0x7fffffff}, {0x7fffffff, 0x7fffffff}, \ 166 {0x7fffffff, 0x7fffffff}, {0x7fffffff, 0x7fffffff}, \ 167 {0x7fffffff, 0x7fffffff}, {0x7fffffff, 0x7fffffff}}, \ 168 /* flags */ 0, \ // flags 169 /* math */ 0, \ // used_math, tty,umask,pwd,root,executable,close_on_exec 170 /* fs info */ -1,0022,NULL,NULL,NULL,NULL,0, \ 171 /* filp */ {NULL,}, \ // filp[20] 172 { \ // ldt[3] 173 {0,0}, \ 174 /* ldt */ {0x9f,0xc0fa00}, \ // 代码长 640K, 基址 0x0,G=1,D=1,DPL=3,P=1 TYPE=0xa 175 {0x9f,0xc0f200}, \ // 数据长 640K, 基址 0x0,G=1,D=1,DPL=3,P=1 TYPE=0x2 176 }, \ 177 /*tss*/ {0,PAGE_SIZE+(long)&init_task,0x10,0,0,0,0,(long)&pg_dir,\ // tss 178 0,0,0,0,0,0,0,0, \ 179 0,0,0x17,0x17,0x17,0x17,0x17,0x17, \ 180 _LDT(0),0x , \ 181 {} \ 182 }, \ 183 } extern struct task_struct *task[nr_tasks]; // 任务指针数组 186 extern struct task_struct *last_task_used_math; // 上一个使用过协处理器的进程 187 extern struct task_struct *current; // 当前运行进程结构指针变量 188 extern unsigned long volatile jiffies; // 从开机开始算起的滴答数 (10ms/ 滴答 ) 189 extern unsigned long startup_time; // 开机时间 从 1970:0:0:0 开始计时的秒数 190 extern int jiffies_offset; // 用于累计需要调整的时间嘀嗒数 #define CURRENT_TIME (startup_time+(jiffies+jiffies_offset)/hz) // 当前时间 ( 秒数 ) 193 // 添加定时器函数 ( 定时时间 jiffies 滴答数, 定时到时调用函数 *fn()) ( kernel/sched.c ) 194 extern void add_timer(long jiffies, void (*fn)(void));

6 // 不可中断的等待睡眠 ( kernel/sched.c ) 195 extern void sleep_on(struct task_struct ** p); // 可中断的等待睡眠 ( kernel/sched.c ) 196 extern void interruptible_sleep_on(struct task_struct ** p); // 明确唤醒睡眠的进程 ( kernel/sched.c ) 197 extern void wake_up(struct task_struct ** p); // 检查当前进程是否在指定的用户组 grp 中 198 extern int in_group_p(gid_t grp); /* 201 * Entry into gdt where to find first TSS. 0-nul, 1-cs, 2-ds, 3-syscall 202 * 4-TSS0, 5-LDT0, 6-TSS1 etc */ /* * 寻找第 1 个 TSS 在全局表中的入口 0- 没有用 nul,1- 代码段 cs,2- 数据段 ds,3- 系统段 syscall * 4- 任务状态段 TSS0,5- 局部表 LTD0,6- 任务状态段 TSS1, 等 */ // 从该英文注释可以猜想到,Linus 当时曾想把系统调用的代码专门放在 GDT 表中第 4 个独立的段中 // 但后来并没有那样做, 于是就一直把 GDT 表中第 4 个描述符项 ( 上面 syscall 项 ) 闲置在一旁 // 下面定义宏 : 全局表中第 1 个任务状态段 (TSS) 描述符的选择符索引号 204 #define FIRST_TSS_ENTRY 4 // 全局表中第 1 个局部描述符表 (LDT) 描述符的选择符索引号 205 #define FIRST_LDT_ENTRY (FIRST_TSS_ENTRY+1) // 宏定义, 计算在全局表中第 n 个任务的 TSS 段描述符的选择符值 ( 偏移量 ) // 因每个描述符占 8 字节, 因此 FIRST_TSS_ENTRY<<3 表示该描述符在 GDT 表中的起始偏移位置 // 因为每个任务使用 1 个 TSS 和 1 个 LDT 描述符, 共占用 16 字节, 因此需要 n<<4 来表示对应 // TSS 起始位置 该宏得到的值正好也是该 TSS 的选择符值 206 #define _TSS(n) ((((unsigned long) n)<<4)+(first_tss_entry<<3)) // 宏定义, 计算在全局表中第 n 个任务的 LDT 段描述符的选择符值 ( 偏移量 ) 207 #define _LDT(n) ((((unsigned long) n)<<4)+(first_ldt_entry<<3)) // 宏定义, 把第 n 个任务的 TSS 段选择符加载到任务寄存器 TR 中 208 #define ltr(n) asm ("ltr %%ax"::"a" (_TSS(n))) // 宏定义, 把第 n 个任务的 LDT 段选择符加载到局部描述符表寄存器 LDTR 中 209 #define lldt(n) asm ("lldt %%ax"::"a" (_LDT(n))) // 取当前运行任务的任务号 ( 是任务数组中的索引值, 与进程号 pid 不同 ) // 返回 :n - 当前任务号 用于 ( kernel/traps.c ) 210 #define str(n) \ 211 asm ("str %%ax\n\t" \ // 将任务寄存器中 TSS 段的选择符复制到 ax 中 212 "subl %2,%%eax\n\t" \ // (eax - FIRST_TSS_ENTRY*8) eax 213 "shrl $4,%%eax" \ // (eax/16) eax = 当前任务号 214 :"=a" (n) \ 215 :"a" (0),"i" (FIRST_TSS_ENTRY<<3)) 216 /* 217 * switch_to(n) should switch tasks to task nr n, first 218 * checking that n isn't the current task, in which case it does nothing. 219 * This also clears the TS-flag if the task we switched to has used 220 * tha math co-processor latest. 221 */ /* * switch_to(n) 将切换当前任务到任务 nr, 即 n 首先检测任务 n 不是当前任务, * 如果是则什么也不做退出 如果我们切换到的任务最近 ( 上次运行 ) 使用过数学 * 协处理器的话, 则还需复位控制寄存器 cr0 中的 TS 标志 */

7 // 跳转到一个任务的 TSS 段选择符组成的地址处会造成 CPU 进行任务切换操作 // 输入 :%0 - 指向 tmp; %1 - 指向 tmp.b 处, 用于存放新 TSS 的选择符 ; // dx - 新任务 n 的 TSS 段选择符 ; ecx - 新任务 n 的任务结构指针 task[n] // 其中临时数据结构 tmp 用于组建 177 行远跳转 (far jump) 指令的操作数 该操作数由 4 字节 // 偏移地址和 2 字节的段选择符组成 因此 tmp 中 a 的值是 32 位偏移值, 而 b 的低 2 字节是新 // TSS 段的选择符 ( 高 2 字节不用 ) 跳转到 TSS 段选择符会造成任务切换到该 TSS 对应的进程 // 对于造成任务切换的长跳转,a 值无用 177 行上的内存间接跳转指令使用 6 字节操作数作为跳 // 转目的地的长指针, 其格式为 :jmp 16 位段选择符 :32 位偏移值 但在内存中操作数的表示顺 // 序与这里正好相反 任务切换回来之后, 在判断原任务上次执行是否使用过协处理器时, 是通过 // 将原任务指针与保存在 last_task_used_math 变量中的上次使用过协处理器任务指针进行比较而 // 作出的, 参见文件 kernel/sched.c 中有关 math_state_restore() 函数的说明 222 #define switch_to(n) {\ 223 struct {long a,b;} tmp; \ 224 asm ("cmpl %%ecx,_current\n\t" \ // 任务 n 是当前任务吗?(current ==task[n]?) 225 "je 1f\n\t" \ // 是, 则什么都不做, 退出 226 "movw %%dx,%1\n\t" \ // 将新任务 TSS 的 16 位选择符存入 tmp.b 中 227 "xchgl %%ecx,_current\n\t" \ // current = task[n];ecx = 被切换出的任务 228 "ljmp %0\n\t" \ // 执行长跳转至 *& tmp, 造成任务切换 // 在任务切换回来后才会继续执行下面的语句 229 "cmpl %%ecx,_last_task_used_math\n\t" \ // 原任务上次使用过协处理器吗? 230 "jne 1f\n\t" \ // 没有则跳转, 退出 231 "clts\n" \ // 原任务上次使用过协处理器, 则清 cr0 中的任务 232 "1:" \ // 切换标志 TS 233 ::"m" (*& tmp.a),"m" (*& tmp.b), \ 234 "d" (_TSS(n)),"c" ((long) task[n])); \ 235 } 236 // 页面地址对准 ( 在内核代码中没有任何地方引用!!) 237 #define PAGE_ALIGN(n) (((n)+0xfff)&0xfffff000) 238 // 设置位于地址 addr 处描述符中的各基地址字段 ( 基地址是 base) // %0 - 地址 addr 偏移 2;%1 - 地址 addr 偏移 4;%2 - 地址 addr 偏移 7;edx - 基地址 base 239 #define _set_base(addr,base) \ 240 asm ("movw %%dx,%0\n\t" \ // 基址 base 低 16 位 ( 位 15-0) [addr+2] 241 "rorl $16,%%edx\n\t" \ // edx 中基址高 16 位 ( 位 31-16) dx 242 "movb %%dl,%1\n\t" \ // 基址高 16 位中的低 8 位 ( 位 23-16) [addr+4] 243 "movb %%dh,%2" \ // 基址高 16 位中的高 8 位 ( 位 31-24) [addr+7] 244 ::"m" (*((addr)+2)), \ 245 "m" (*((addr)+4)), \ 246 "m" (*((addr)+7)), \ 247 "d" (base) \ 248 :"dx") // 告诉 gcc 编译器 edx 寄存器中的值已被嵌入汇编程序改变了 249 // 设置位于地址 addr 处描述符中的段限长字段 ( 段长是 limit) // %0 - 地址 addr;%1 - 地址 addr 偏移 6 处 ;edx - 段长值 limit 250 #define _set_limit(addr,limit) \ 251 asm ("movw %%dx,%0\n\t" \ // 段长 limit 低 16 位 ( 位 15-0) [addr] 252 "rorl $16,%%edx\n\t" \ // edx 中的段长高 4 位 ( 位 19-16) dl 253 "movb %1,%%dh\n\t" \ // 取原 [addr+6] 字节 dh, 其中高 4 位是些标志 254 "andb $0xf0,%%dh\n\t" \ // 清 dh 的低 4 位 ( 将存放段长的位 19-16) 255 "orb %%dh,%%dl\n\t" \ // 将原高 4 位标志和段长的高 4 位 ( 位 19-16) 合成 1 字节, 256 "movb %%dl,%1" \ // 并放会 [addr+6] 处 257 ::"m" (*(addr)), \

8 258 "m" (*((addr)+6)), \ 259 "d" (limit) \ 260 :"dx") 261 // 设置局部描述符表中 ldt 描述符的基地址字段 262 #define set_base(ldt,base) _set_base( ((char *)&(ldt)), base ) // 设置局部描述符表中 ldt 描述符的段长字段 263 #define set_limit(ldt,limit) _set_limit( ((char *)&(ldt)), (limit-1)>>12 ) 264 // 从地址 addr 处描述符中取段基地址 功能与 _set_base() 正好相反 // edx - 存放基地址 ( base);%1 - 地址 addr 偏移 2;%2 - 地址 addr 偏移 4;%3 - addr 偏移 #define _get_base(addr) ({\ 266 unsigned long base; \ 267 asm ("movb %3,%%dh\n\t" \ // 取 [addr+7] 处基址高 16 位的高 8 位 ( 位 31-24) dh 268 "movb %2,%%dl\n\t" \ // 取 [addr+4] 处基址高 16 位的低 8 位 ( 位 23-16) dl 269 "shll $16,%%edx\n\t" \ // 基地址高 16 位移到 edx 中高 16 位处 270 "movw %1,%%dx" \ // 取 [addr+2] 处基址低 16 位 ( 位 15-0) dx 271 :"=d" ( base) \ // 从而 edx 中含有 32 位的段基地址 272 :"m" (*((addr)+2)), \ 273 "m" (*((addr)+4)), \ 274 "m" (*((addr)+7))); \ 275 base;}) 276 // 取局部描述符表中 ldt 所指段描述符中的基地址 277 #define get_base(ldt) _get_base( ((char *)&(ldt)) ) 278 // 取段选择符 segment 指定的描述符中的段限长值 // 指令 lsl 是 Load Segment Limit 缩写 它从指定段描述符中取出分散的限长比特位拼成完整的 // 段限长值放入指定寄存器中 所得的段限长是实际字节数减 1, 因此这里还需要加 1 后才返回 // %0 - 存放段长值 ( 字节数 );%1 - 段选择符 segment 279 #define get_limit(segment) ({ \ 280 unsigned long limit; \ 281 asm ("lsll %1,%0\n\tincl %0":"=r" ( limit):"r" (segment)); \ 282 limit;}) #endif 285

提纲. 1 实验准备. 2 从实模式进入保护模式. 3 小结 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, / 11

提纲. 1 实验准备. 2 从实模式进入保护模式. 3 小结 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, / 11 .. 软件综合实验之操作系统 进入保护模式 陈香兰 中国科学技术大学计算机学院 July 1, 2016 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, 2016 1 / 11 提纲. 1 实验准备. 2 从实模式进入保护模式. 3 小结 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, 2016 2 / 11 实验准备 实验环境准备

More information

Kernel Kernel Kernel Kernel load estimator runqueue kernel/sched.

Kernel Kernel Kernel Kernel load estimator runqueue kernel/sched. Linux Kernel 2.6 20321131 Kernel 2.4...3 Kernel 2.4...3 Kernel 2.4...3 Kernel 2.6...3...3 1....3 2....4 3. load estimator...4 4....4 5....4...4 1....4 2. runqueue kernel/sched.c...4 3. task_struct(include/linux/sched.h)...6...9

More information

36 asm ("mov %%fs,%%ax":"=a" ( res):); \ 37 res;}) 38 // 以下定义了一些函数原型 39 void page_exception(void); // 页异常 实际是 page_fault(mm/page.s,14) void divi

36 asm (mov %%fs,%%ax:=a ( res):); \ 37 res;}) 38 // 以下定义了一些函数原型 39 void page_exception(void); // 页异常 实际是 page_fault(mm/page.s,14) void divi 程序 8-2 linux/kernel/traps.c 1 /* 2 * linux/kernel/traps.c 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 7 /* 8 * 'Traps.c' handles hardware traps and faults after we have saved some 9 * state in 'asm.s'. Currently

More information

06721 main() lock pick proc() restart() [2][4] MINIX minix2.0 GDT, IDT irq table[] CPU CPU CPU CPU (IDTR) idt[] CPU _hwint00:! Interrupt

06721 main() lock pick proc() restart() [2][4] MINIX minix2.0 GDT, IDT irq table[] CPU CPU CPU CPU (IDTR) idt[] CPU _hwint00:! Interrupt MINIX ( 730000) ( 730000) MINIX MINIX2.0 MINIX : MINIX TP3 1 MINIX UNIX Tanenbaum UNIX MINIX LINUX MINIX MINIX MINIX1.0 UNIX V7 MINIX2.0[3] POSIX MINIX3 MINIX Gabriel A. Wainer 1994-1995 [5] 1998 I/O 2002

More information

Linux kernel exploit研究和探索

Linux kernel exploit研究和探索 Linux kernel exploit DOC alert7 PPT e4gle 2002-12-2 1 2002-12-2 2 Linux kernel exploit kernel exploit exploit exploit exploit (Kernel Buffer Overflow) (Kernel

More information

程序 linux/include/linux/math_emu.h 1 /* 2 * linux/include/linux/math_emu.h 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 #ifndef _LINUX_MATH_EMU_H 7 #de

程序 linux/include/linux/math_emu.h 1 /* 2 * linux/include/linux/math_emu.h 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 #ifndef _LINUX_MATH_EMU_H 7 #de 程序 14-24 linux/include/linux/math_emu.h 1 /* 2 * linux/include/linux/math_emu.h 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 #ifndef _LINUX_MATH_EMU_H 7 #define _LINUX_MATH_EMU_H 8 9 #include

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

36 p->p_osptr->p_ysptr = p->p_ysptr; 37 if (p->p_ysptr) 38 p->p_ysptr->p_osptr = p->p_osptr; 39 else 40 p->p_pptr->p_cptr = p->p_osptr; 41 free_page((

36 p->p_osptr->p_ysptr = p->p_ysptr; 37 if (p->p_ysptr) 38 p->p_ysptr->p_osptr = p->p_osptr; 39 else 40 p->p_pptr->p_cptr = p->p_osptr; 41 free_page(( 程序 8-7 linux/kernel/exit.c 1 2 * linux/kernel/exit.c 3 * 4 * (C) 1991 Linus Torvalds 5 6 7 #define DEBUG_PROC_TREE // 定义符号 调试进程树 8 9 #include // 错误号头文件 包含系统中各种出错号 (Linus 从 minix 中引进的 ) 10 #include

More information

1 CPU interrupt INT trap CPU exception

1 CPU interrupt INT trap CPU exception 1 CPU interrupt INT trap CPU exception 2 X86 CPU gate 64 16 1 2 5 8 16 16 P DPL 00101 TSS 101 DPL P 1 64 16 1 2 1 1 3 3 5 16 16 16 P DPL 0 D 000 16 110 111 100 D 1=32 0=16 DPL P 1 INT DPL1>=CPL>=DPL CPU

More information

<4D F736F F F696E74202D20B2D9D7F7CFB5CDB35F4C696E7578BDF8B3CCD3EBCFDFB3CC2E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D20B2D9D7F7CFB5CDB35F4C696E7578BDF8B3CCD3EBCFDFB3CC2E BBCE6C8DDC4A3CABD5D> Linux 中的进程与线程 进程调度 Linux 线程 目录 1 进程控制块 (PCB) 是什么? PCB 的内容 Linux 下的 PCB 有什么特点? Task_struct 进程是程序执行时的一个实例 1. 有一段程序供其执行 2. 有起码的 私有财产, 也就是进程的专有的系统堆栈空间 3. 有 户口, 就是内核中的一个 task_struct 数据结构, 有了这个数据结构, 进程才能成为内核调度的一个基本单位,

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

幻灯片 1

幻灯片 1 操作系统课程实验 Lab1:bootloader 启动 ucore os 大纲 x86 启动顺序 C 函数调用 gcc 内联汇编 (inline assembly) x86-32 下的中断处理 理解 x86-32 平台的启动过程理解 x86-32 的实模式 保护模式理解段机制 x86 启动顺序 x86 启动顺序 寄存器初始值 摘自 "IA-32 Intel 体系结构软件开发者手册 " x86 启动顺序

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

Microsoft PowerPoint - os_4.ppt

Microsoft PowerPoint - os_4.ppt 行 程 資 科 系 林 偉 川 行 程 概 念 行 程 與 程 式 主 要 的 不 同 點 : 程 式 是 被 放 在 外 部 的 儲 存 裝 置 如 磁 碟 上, 而 行 程 則 被 放 在 記 憶 體 中 程 式 在 儲 存 裝 置 中 是 靜 態 的, 而 行 程 在 記 憶 體 中 是 動 態 的, 它 會 隨 著 一 些 事 件 的 發 生 而 產 生 相 對 的 改 變 行 程, 就 是

More information

华恒家庭网关方案

华恒家庭网关方案 LINUX V1.5 1 2 1 2 LINUX WINDOWS PC VC LINUX WINDOWS LINUX 90% GUI LINUX C 3 REDHAT 9 LINUX PC TFTP/NFS http://www.hhcn.com/chinese/embedlinux-res.html minicom NFS mount C HHARM9-EDU 1 LINUX HHARM9-EDU

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

第11章 可调内核参数

第11章 可调内核参数 11 11 Unix BSD 4.4 Linux sysctl Unix Linux /proc window /proc /proc/sys /proc/sys sysctl Unix root /proc/sys/vm root /proc/sys sysctl /proc/sys struct ctl_table 18274 struct ctl_tables /proc/sys struct

More information

untitled

untitled 8086/8088 CIP /. 2004.8 ISBN 7-03-014239-X.... TP313 CIP 2004 086019 16 100717 http://www.sciencep.com * 2004 8 2004 8 1 5 500 787 1092 1/16 16 1/2 391 000 1 2 ii 1 2 CAI CAI 3 To the teacher To the student

More information

浙江大学本科论文模板

浙江大学本科论文模板 本 科 生 毕 业 设 计 报 告 项 目 名 称 微 型 操 作 系 统 的 设 计 与 实 现 姓 名 与 学 号 曲 国 铖 3063027053 指 导 老 师 王 新 宇 专 业 计 算 机 科 学 与 技 术 学 院 计 算 机 学 院 A Dissertation Submitted to Zhejiang University for the Degree of Bachelor of

More information

C语言的应用.PDF

C语言的应用.PDF AVR C 9 1 AVR C IAR C, *.HEX, C,,! C, > 9.1 AVR C MCU,, AVR?! IAR AVR / IAR 32 ALU 1KBytes - 8MBytes (SPM ) 16 MBytes C C *var1, *var2; *var1++ = *--var2; AVR C 9 2 LD R16,-X ST Z+,R16 Auto (local

More information

第一章 概论

第一章  概论 1 2 3 4 5 6 7 8 Linux 7.1 7.1.1 1 1 2 3 2 3 1 2 3 3 1 2 3 7.1.2 1 2 1 2 3 4 5 7.1.3 1 1 2 3 2 7.1 3 7.1.4 1 1 PCB 2 3 2 PCB PCB PCB PCB PCB 4 1 2 PSW 3 CPU CPU 4 PCB PCB CPU PCB PCB PCB PCB PCB PCB PCB

More information

ebook

ebook 3 3 3.1 3.1.1 ( ) 90 3 1966 B e r n s t e i n P ( i ) R ( i ) W ( i P ( i P ( j ) 1) R( i) W( j)=φ 2) W( i) R( j)=φ 3) W( i) W( j)=φ 3.1.2 ( p r o c e s s ) 91 Wi n d o w s Process Control Bl o c k P C

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

Andes Technology PPT Temp

Andes Technology PPT Temp 晶心科技線上技術研討會 AndesCore 便捷的全 C 嵌入式编程 晶心科技市場及技術服務部毛礼杰軟件經理 WWW.ANDESTECH.COM 大纲 系统初始化介绍 异常和中断说明 全 C 语法例子说明 总结 2 CPU 相关特性 1: 中断向量表 系统初始化 (1) 2: 系统寄存器 通常需要用 assembly( 汇编 / 组合 ) 语言来操作 AndesCore 全 C 嵌入式编程 C 扩展语法

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1 21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414

More information

Oracle 4

Oracle 4 Oracle 4 01 04 Oracle 07 Oracle Oracle Instance Oracle Instance Oracle Instance Oracle Database Oracle Database Instance Parameter File Pfile Instance Instance Instance Instance Oracle Instance System

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

ebook15-10

ebook15-10 1 0 10.1 U N I X V 7 4. 3 B S D S V R 3 P O S I X. 1 100 % 10.2 S I G S I G A B RT a b o r t S I G A L R M a l a r m V 7 1 5 S V R 4 4. 3 + B S D 31 < s i g n a l. h > 0 10. 9 k i l l 0 P O S I X. 1 D

More information

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0 SDChain-Matrix 节点搭建指南 目录 1 环境要求... 3 2 软件下载... 4 3 安装部署... 4 3.1 部署可执行程序目录... 4 3.2 部署配置文件目录... 4 3.3 部署数据库文件目录... 4 3.4 部署日志文件目录... 4 3.5 部署依赖库文件目录... 4 4 配置参数... 5 5 启动运行... 7 5.1 普通模式启动... 7 5.2 加载启动模式...

More information

uc/os 1

uc/os 1 uc/os 1 uc/os-ii Source Code ANSI C, uc/os-ii 8/16/32 bits microprocessor Preemptive real-time Task 64 Stack Size ROMable (C compiler, assembler and linker/locator) uc/os-ii Mailboxes, Queues, Semaphores,

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

穨control.PDF

穨control.PDF TCP congestion control yhmiu Outline Congestion control algorithms Purpose of RFC2581 Purpose of RFC2582 TCP SS-DR 1998 TCP Extensions RFC1072 1988 SACK RFC2018 1996 FACK 1996 Rate-Halving 1997 OldTahoe

More information

untitled

untitled 1 5 IBM Intel 1. IBM 第 1/175 页 第 2/175 页 第 3/175 页 80 第 4/175 页 2. IBM 第 5/175 页 3. (1) 第 6/175 页 第 7/175 页 第 8/175 页 = = 第 9/175 页 = = = = = 第 10/175 页 = = = = = = = = 3. (2) 第 11/175 页 第 12/175 页 第 13/175

More information

ebook15-C

ebook15-C C 1 1.1 l s ( 1 ) - i i 4. 14 - d $ l s -ldi /etc/. /etc/.. - i i 3077 drwxr-sr-x 7 bin 2048 Aug 5 20:12 /etc/./ 2 drwxr-xr-x 13 root 512 Aug 5 20:11 /etc/../ $ls -ldi /. /..... i 2 2 drwxr-xr-x 13 root

More information

29 0. 0.1 0.2 0.3 1. 30 1840 1930 1932 1926 35 51 55 214 1 31 1988 3 2. 2.1 3 2000 2.2 79 1 52 32 56 57 57 2 2.3. 2 10 4 40 16 4 64 2.4 3. 3.0 3.1 1 Hz 33 193ms 176 174 169 167 165 163 162 160 159 (T )

More information

C/C++ - 字符输入输出和字符确认

C/C++ - 字符输入输出和字符确认 C/C++ Table of contents 1. 2. getchar() putchar() 3. (Buffer) 4. 5. 6. 7. 8. 1 2 3 1 // pseudo code 2 read a character 3 while there is more input 4 increment character count 5 if a line has been read,

More information

学习MSP430单片机推荐参考书

学习MSP430单片机推荐参考书 MSP430 16 MSP430 C MSP430 C MSP430 FLASH 16 1 CPU 16 ALU 16 PC SP SR R4~R15 2 3 00-FFH 100-1FFH 4 5 1 2 51 24 27 6 1 2 3 4 5 6 4 12 SR SP SR CPU SR CPU C Z N GIE CPUOff CPU OscOff SCG0 SCG1 CPU EXIT SP

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

A. 城 市 化 是 我 国 发 展 的 必 由 之 路 B. 单 纯 发 展 大 城 市 不 利 于 城 市 化 的 推 进 C: 要 实 现 城 市 化, 就 必 须 让 城 市 充 分 吸 纳 农 村 人 口 D: 大 城 市 对 外 地 农 村 人 口 的 吸 引 力 明 显 低 于 中 小

A. 城 市 化 是 我 国 发 展 的 必 由 之 路 B. 单 纯 发 展 大 城 市 不 利 于 城 市 化 的 推 进 C: 要 实 现 城 市 化, 就 必 须 让 城 市 充 分 吸 纳 农 村 人 口 D: 大 城 市 对 外 地 农 村 人 口 的 吸 引 力 明 显 低 于 中 小 2017 年 MBA 大 师 逻 辑 强 化 班 课 程 讲 义 第 1 章 假 设 补 全 逻 辑 假 设 选 项 起 到 的 作 用 是 : 1) 补 全 推 出 结 论 需 要 的 逻 辑 缺 失 部 分 2) 引 入 结 论 成 立 的 前 提 条 件 ( 必 要 条 件 ) 补 全 逻 辑 假 设 题 干 特 征 1) 题 干 问 的 是 假 设 2) 题 干 往 往 会 出 现 逻 辑

More information

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc

More information

Microsoft Word - 第5章.doc

Microsoft Word - 第5章.doc 目 录 及 权 限 管 理 随 着 的 不 断 发 展, 越 来 越 多 的 人 开 始 使 用, 对 于 那 些 刚 接 触 的 人 来 说, 恐 怕 最 先 感 到 困 惑 的 就 是 那 些 不 明 不 白 的 目 录 了 同 样, 系 统 是 一 个 典 型 的 多 用 户 系 统 为 了 保 护 系 统 的 安 全 性, 系 统 对 不 同 用 户 访 问 同 一 文 件 或 目 录 的

More information

Linux 操作系统分析 Chapter 9-2 Linux 中程序的执行 陈香兰 苏州研究院中国科学技术大学 Fall 2014 November 4,

Linux 操作系统分析 Chapter 9-2 Linux 中程序的执行 陈香兰  苏州研究院中国科学技术大学 Fall 2014 November 4, Linux 操作系统分析 Chapter 9-2 Linux 中程序的执行 陈香兰 (xlanchen@ustceducn) 计算机应用教研室 @ 计算机学院嵌入式系统实验室 @ 苏州研究院中国科学技术大学 Fall 2014 November 4, 2014 陈香兰 (xlanchen@ustceducn) ( 计算机应用教研室 Linux 操作系统分析 @ 计算机学院嵌入式系统实验室 Chapter

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf (%d, & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf (%d %d 2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,

More information

46 * the current mask in old_mask and block until a signal comes in. 47 */ /* 自动地更换成新的信号屏蔽码, 并等待信号的到来 * * 我们需要对系统调用 (syscall) 做一些处理 我们会从系统调用库接口取得某些信息

46 * the current mask in old_mask and block until a signal comes in. 47 */ /* 自动地更换成新的信号屏蔽码, 并等待信号的到来 * * 我们需要对系统调用 (syscall) 做一些处理 我们会从系统调用库接口取得某些信息 程序 8-6 linux/kernel/signal.c 1 /* 2 * linux/kernel/signal.c 3 * 4 * (C) 1991 Linus Torvalds 5 */ 6 7 #include // 调度程序头文件, 定义任务结构 task_struct 初始任务 0 的数据, // 还有一些有关描述符参数设置和获取的嵌入式汇编函数宏语句 8

More information

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx 第五讲 授课教师 : 陆俊林王箫音 2012 年春季学期 主要内容 一 寻址方式概述 二 数据的寻址方式 三 转移地址的寻址方式 教材相关章节 : 微型计算机基本原理与应用 ( 第二版 ) 第 4 章寻址方式与指令系统 1 主要内容 一 寻址方式概述 二 数据的寻址方式 三 转移地址的寻址方式 2 指令的组成 指令由操作码和操作数两部分组成 操作码操作数 MOV AX, 8726H ADD AX,

More information

<4D6963726F736F667420576F7264202D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

<4D6963726F736F667420576F7264202D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63> 因 为 路 过 你 的 路, 因 为 苦 过 你 的 苦, 所 以 快 乐 着 你 的 快 乐, 追 逐 着 你 的 追 逐 内 容 简 介 本 书 根 据 2005 年 下 半 年 实 施 的 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 嵌 入 式 系 统 设 计 师 级 考 试 大 纲 精 神, 在 深 入 研 究 历 年 计 算 机 技 术 与 软

More information

VASP应用运行优化

VASP应用运行优化 1 VASP wszhang@ustc.edu.cn April 8, 2018 Contents 1 2 2 2 3 2 4 2 4.1........................................................ 2 4.2..................................................... 3 5 4 5.1..........................................................

More information

C C

C C C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please

More information

目录 1 概述 IA-32 体系结构内存地址映射 CPU 相关寄存器 系统寄存器 内存管理寄存器 保护模式的内存管理 位时页面机制地址映射 逻辑地址到线性地址的映射...9

目录 1 概述 IA-32 体系结构内存地址映射 CPU 相关寄存器 系统寄存器 内存管理寄存器 保护模式的内存管理 位时页面机制地址映射 逻辑地址到线性地址的映射...9 Linux 内存地址映射 目录 1 概述...3 2 IA-32 体系结构内存地址映射...4 2.1 CPU 相关寄存器...4 2.1.1 系统寄存器...5 2.1.2 内存管理寄存器...5 2.2 保护模式的内存管理...7 2.3 32 位时页面机制地址映射...9 2.3.1 逻辑地址到线性地址的映射...9 2.3.2 线性地址到物理地址的映射...11 2.4 PAE 页面机制地址映射过程...12

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

ebook 132-6

ebook 132-6 6 SQL Server Windows NT Windows 2000 6.1 Enterprise Manager SQL Server Enterprise Manager( ) (Microsoft Management C o n s o l e M M C ) Enterprise Manager SQL Server Enterprise Manager 6.1.1 Enterprise

More information

提纲 1 2 OS Examples for 3

提纲 1 2 OS Examples for 3 第 4 章 Threads2( 线程 2) 中国科学技术大学计算机学院 October 28, 2009 提纲 1 2 OS Examples for 3 Outline 1 2 OS Examples for 3 Windows XP Threads I An Windows XP application runs as a seperate process, and each process may

More information

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc TwinCAT 2001.12.11 TwinCAT 1. TwinCAT... 3 2.... 4... 4...11 3. TwinCAT PLC... 13... 13 PLC IEC 61131-3... 14 4. TwinCAT... 17... 17 5. TwinCAT... 18... 18 6.... 19 Maschine.pro... 19... 27 7.... 31...

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

<4D F736F F F696E74202D DB5DAB6FECAAEB6FEBDB22DCEA2D0CDBCC6CBE3BBFACFC8BDF8BCBCCAF5CAB5C0FDA3A8D2BBA3A92E >

<4D F736F F F696E74202D DB5DAB6FECAAEB6FEBDB22DCEA2D0CDBCC6CBE3BBFACFC8BDF8BCBCCAF5CAB5C0FDA3A8D2BBA3A92E > 第二十二讲 授课教师 : 陆俊林王箫音 2012 年春季学期 主要内容 一 实模式回顾 二 虚拟存储机制 三 保护模式 四 64 位模式 五 多线程技术 教材相关章节 : 微型计算机基本原理与应用 ( 第二版 ) 第 15 章 80x86/Pentium 保护模式原理与结构 1 主要内容 一 实模式回顾 二 虚拟存储机制 三 保护模式 四 64 位模式 五 多线程技术 2 回顾 : 三种工作模式之间的转换

More information

目 录

目 录 国 网 北 京 市 电 力 公 司 2014 年 电 力 市 场 交 易 信 息 报 告 国 网 北 京 市 电 力 公 司 二 〇 一 五 年 一 月 目 录 一 电 力 市 场 需 求 信 息 1 ( 一 ) 电 力 市 场 环 境 1 ( 二 ) 电 力 消 费 情 况 1 二 电 力 市 场 供 应 信 息 2 ( 一 ) 电 网 建 设 及 运 行 情 况 2 ( 二 ) 电 厂 发 电

More information

1 () 2303 1737 1528 853 90 1991 2241 1178. 3 1157 1253 910 1122 1234 542 1278. 3 1144 1530 1005 934 648 213() 1705 720 859 2035 1649 1307 1210 120 487 227 1066 615 964 5 1039 1448 1015 1062 3 791 1258.

More information

ebook15-4

ebook15-4 4 4.1 I / O I / s t a t s t a t ( ) U N I X 4.2 stat fstat lstat s t a t #include #include int stat(const char p a * t h n a m e, struct stat b * u f) ; int fstat(int f i l e

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

ROP_bamboofox.key

ROP_bamboofox.key ROP Return Oriented Programming Lays @ BambooFox Who Am I Lays / L4ys / 累死 - l4ys.tw Reverse Engineering BambooFox / HITCON Outline Buffer Overflow ret2libc / ret2text Return Oriented Programming Payload

More information

DR2010.doc

DR2010.doc DR/2010 HACH 11-8-96-2 HACH. DR/2010, / UL E79852 CSA C22.223 LR 58275 VDE GS 1015-92 FCC"A" 15 : AMADOR CORP, HACH. EN50 011/CISPR 11 "B" (EMI)/89/336/EEC/EMC: AMADOR CORP, HACH.. EN50 082-1( )/89/226/EEC

More information

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式] 指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

本 简 本 内 容 由 河 南 蓝 森 环 保 科 技 有 限 公 司 编 制, 并 经 南 京 市 浦 口 区 星 甸 经 济 技 术 开 发 有 限 公 司 确 认 同 意 提 供 给 环 保 主 管 部 门 作 为 南 京 市 浦 口 区 星 甸 经 济 技 术 开 发 有 限 公 司 浦 口

本 简 本 内 容 由 河 南 蓝 森 环 保 科 技 有 限 公 司 编 制, 并 经 南 京 市 浦 口 区 星 甸 经 济 技 术 开 发 有 限 公 司 确 认 同 意 提 供 给 环 保 主 管 部 门 作 为 南 京 市 浦 口 区 星 甸 经 济 技 术 开 发 有 限 公 司 浦 口 南 京 市 浦 口 区 星 甸 经 济 技 术 开 发 有 限 公 司 浦 口 区 星 甸 街 道 夏 桥 农 民 集 中 居 住 区 项 目 环 境 影 响 报 告 书 ( 简 本 ) ( 本 简 本 仅 供 参 考 查 阅 ) 建 设 单 位 : 南 京 市 浦 口 区 星 甸 经 济 技 术 开 发 有 限 公 司 评 价 单 位 : 河 南 蓝 森 环 保 科 技 有 限 公 司 ( 国 环

More information

AIX系统培训7.ppt

AIX系统培训7.ppt AIX Undefined Defined Available No Differenc bound vmstat when %user + %sys greater than 80% I/O bound vmstat when %iowait greater than 40% (AIX 4.3.3 or later) lication

More information

Ps22Pdf

Ps22Pdf C ( CIP) C /. :, 2001. 7 21 ISBN 7-5624 -2355-5. C........ C. TP312 CIP ( 2001 ) 034496 C * * : 7871092 1 /16 : 14. 25 : 356 20017 1 20017 1 : 1 6 000 ISBN 7-5624-2355-5 / TP311 : 21. 00 C, C,,,, C,, (

More information

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

幻灯片 1

幻灯片 1 3 8086 Tel:2656809 tjx@csu.edu.cn 2005-9-14 1 2005-9-14 2 8086 8 8086 8086 7 2005-9-14 3 PC 2005-9-14 4 2005-9-14 5 81616 2005-9-14 6 [ ] MOV AX, 3064H AX=3064H 16AX OP 64H 30H 2005-9-14 7 16 AX BX CX

More information

/ / (FC 3)...

/ / (FC 3)... Modbus/TCP 1.0 1999 3 29 Andy Swales Schneider aswales@modicon.com ... 2 1.... 3 2.... 3 2.1.. 3 2.2..4 2.3..4 2.4... 5 3.... 5 3.1 0... 5 3.2 1... 5 3.3 2... 6 3.4 / /... 7 4.... 7 5.... 8 5.1 0... 9

More information

SDP 1 2 3 4 8 9 10 12 19

SDP 1 2 3 4 8 9 10 12 19 SDP SDP 1 2 3 4 8 9 10 12 19 SDP 2 SDP CANBUS 3m/s 48 1 2 N 3 4 5 6 7 8 9 EMC EMC ENS008212 EN618003 10 IP21 SDP 3 1 1 4 2 5 3 P24 103 104 N24 G24 P24 101 102 N24 G24 J2 J3 n P2 P1 P3 J2 J1 J3 1 P2 P1

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

C/C++ - 字符串与字符串函数

C/C++ - 字符串与字符串函数 C/C++ Table of contents 1. 2. 3. 4. 1 char C 2 char greeting [50] = " How " " are " " you?"; char greeting [50] = " How are you?"; 3 printf ("\" Ready, go!\" exclaimed John."); " Ready, go!" exclaimed

More information

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf("%d", &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf("%

2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf(%d, &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf(% 2013 ( 28 ) ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 10 B 1 C 1 D 5 E 5 F 1 G II 5 H 30 1 2013 C 1 #include 2 int main(void) 3

More information

<4D6963726F736F667420576F7264202D20B1B1BEA9B1B1D1C7D2BDD4BACFEEC4BFBBB7BEB3D3B0CFECB1A8B8E6CAE9A3A8BCF2B1BEA3A92E646F63>

<4D6963726F736F667420576F7264202D20B1B1BEA9B1B1D1C7D2BDD4BACFEEC4BFBBB7BEB3D3B0CFECB1A8B8E6CAE9A3A8BCF2B1BEA3A92E646F63> 北 京 北 亚 医 院 项 目 环 境 影 响 报 告 书 ( 简 本 ) 建 设 单 位 : 北 京 北 亚 医 院 2016 年 5 月 一 建 设 项 目 概 况 ( 一 ) 项 目 名 称 北 京 北 亚 医 院 ( 二 ) 建 设 单 位 北 京 北 亚 医 院 ( 三 ) 位 置 及 用 地 范 围 北 北 京 北 亚 医 院 位 于 北 京 市 朝 阳 区 安 定 门 外 安 苑 里

More information

BC04 Module_antenna__ doc

BC04 Module_antenna__ doc http://www.infobluetooth.com TEL:+86-23-68798999 Fax: +86-23-68889515 Page 1 of 10 http://www.infobluetooth.com TEL:+86-23-68798999 Fax: +86-23-68889515 Page 2 of 10 http://www.infobluetooth.com TEL:+86-23-68798999

More information

1 TPIS TPIS 2 2

1 TPIS TPIS 2 2 1 1 TPIS TPIS 2 2 1. 2. 3. 4. 3 3 4 5 4 TPIS TPIS 6 5 350 Mark Coil F3/F6 350 M 150 M 25 M 7.12M 8 M F3 F6 F4 F7 F8 8M AA 7 350 28V 5V IC HCPL2731 0.5mA 6 8 (TPIS) TPIS 9 7 IC AT89C2051 AT89C2051 CMOS8

More information

1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005

1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005 1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005 1 1...3 2...20 3...28 4...41 5 Windows SQL Server...47 Microsoft SQL Server 2005 DBSRV1 Microsoft SQL Server

More information

2 12

2 12 SHENZHEN BRILLIANT CRYSTAL TECHNOLOGIC CO.,LTD. The specification for the following models Graphic LCM serial communication control board CB001 PROPOSED BY APPROVED Design Approved TEL:+86-755-29995238

More information

untitled

untitled MA MA50/MA100 ---------------------------------------------------------------------------------------------------3 ---------------------------------------------------------------------------------------------------4

More information

c pm

c pm 大 饑 荒 中 的 糧 食 食 用 增 量 法 與 代 食 品 高 華 從 1960 年 起 的 兩 年 多 時 間 ), 在 中 國 廣 大 地 區 先 後 開 展 了 兩 場 與 糧 食 問 題 有 關 的 群 眾 運 動 : 糧 食 食 用 增 量 法 和 代 食 品 宣 傳 推 廣 運 動 前 者 是 在 大 饑 荒 已 經 蔓 延, 當 政 者 仍 確 信 糧 食 大 豐 收, 由 地 方

More information

ebook35-21

ebook35-21 21 Linux L i n u x 211 U N I X U N I X I / O F I F O U N I X I n t e r n e t s o c k e t () s o c k e t () send() r e c v ( read() w r i t e () send() r e c v () I n t e r n e t 212 Internet Internet S

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

Microsoft PowerPoint - ds-1.ppt [兼容模式]

Microsoft PowerPoint - ds-1.ppt [兼容模式] http://jwc..edu.cn/jxgl/ HomePage/Default.asp 2 说 明 总 学 时 : 72( 学 时 )= 56( 课 时 )+ 16( 实 验 ) 行 课 时 间 : 第 1 ~14 周 周 学 时 : 平 均 每 周 4 学 时 上 机 安 排 待 定 考 试 时 间 : 课 程 束 第 8 11 12 章 的 内 容 为 自 学 内 容 ; 目 录 中 标 有

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc 2 5 8 11 0 1. 13 2. 15 3. 18 1 1. 22 2. 25 3. 27 2 1. 35 2. 38 3. 41 4. 43 5. 48 6. 50 3 1. 56 2. 59 3. 63 4. 65 5. 69 13 22 35 56 6. 74 7. 82 8. 84 9. 87 10. 97 11. 102 12. 107 13. 111 4 114 1. 114 2.

More information

Microsoft Word - 澎湖田調報告_璉謙組.doc

Microsoft Word - 澎湖田調報告_璉謙組.doc 越 籍 新 住 民 妊 娠 醫 療 照 護 : 訪 談 李 亞 梅 女 士 組 長 : 郭 璉 謙 成 大 中 文 所 博 二 組 員 : 阮 壽 德 成 大 中 文 所 博 一 黃 榆 惠 成 大 中 文 所 碩 一 許 愷 容 成 大 中 文 所 碩 一 何 珍 儀 成 大 中 文 所 碩 一 指 導 老 師 : 陳 益 源 教 授 前 言 2009 年 03 月 21 日, 下 午 2 時 30

More information

ebook50-11

ebook50-11 11 Wi n d o w s C A D 53 M F C 54 55 56 57 58 M F C 11.1 53 11-1 11-1 MFC M F C C D C Wi n d o w s Wi n d o w s 4 11 199 1. 1) W M _ PA I N T p W n d C W n d C D C * p D C = p W n d GetDC( ); 2) p W n

More information

How to Debug Tuxedo Server printf( Input data is: %s, inputstr); fprintf(stdout, Input data is %s, inputstr); fprintf(stderr, Input data is %s, inputstr); printf( Return data is: %s, outputstr); tpreturn(tpsuccess,

More information

bingdian001.com

bingdian001.com TSM12M TSM12 STM8L152C6, STM8L152R8 MSP430F5325 whym1987@126.com! /******************************************************************************* * : TSM12.c * : * : 2013/10/21 * : TSM12, STM8L f(sysclk)

More information

程序 14-9 linux/include/string.h 1 #ifndef _STRING_H_ 2 #define _STRING_H_ 3 4 #ifndef NULL 5 #define NULL ((void *) 0) 6 #endif 7 8 #ifndef _SIZE_T 9 #

程序 14-9 linux/include/string.h 1 #ifndef _STRING_H_ 2 #define _STRING_H_ 3 4 #ifndef NULL 5 #define NULL ((void *) 0) 6 #endif 7 8 #ifndef _SIZE_T 9 # 程序 14-9 linux/include/string.h 1 #ifndef _STRING_H_ 2 #define _STRING_H_ 3 4 #ifndef NULL 5 #define NULL ((void *) 0) 6 #endif 7 8 #ifndef _SIZE_T 9 #define _SIZE_T 10 typedef unsigned int size_t; 11 #endif

More information

untitled

untitled XP248 1 XP248 XP248 DCS PLC SCnet SCnet DCS SCnet DCS 1.1 XP248 Modbus HostLink Modbus XP248 4 DB25 XP248 MODBUS XP248 SCControl XP248 4 RS232 RS485 4 32 XP248 COM0-COM1 COM2-COM3 1200 19200bit/s 5 8 1

More information

多进程管理副本.key

多进程管理副本.key 美妙的多进程管理 造 个类 gunicorn 的轮 blog: xiaorui.cc github: github.com/rfyiamcool 内容 supervisor vs gunicorn vs uwsgi linux 异步信号 孤 进程 vs 僵 进程 daemon 的实现 prefork 是怎么 回事 打造 个较完善的多进程管理轮 怎么写代码 Master Worker elegance

More information

Bus Hound 5

Bus Hound 5 Bus Hound 5.0 ( 1.0) 21IC 2007 7 BusHound perisoft PC hound Bus Hound 6.0 5.0 5.0 Bus Hound, IDE SCSI USB 1394 DVD Windows9X,WindowsMe,NT4.0,2000,2003,XP XP IRP Html ZIP SCSI sense USB Bus Hound 1 Bus

More information

嵌入式Linux块设备驱动开发解析

嵌入式Linux块设备驱动开发解析 The success's road 嵌 入 式 LINUX 网 络 驱 动 开 发 Copyright 2007-2008 Farsight. All rights reserved. 要 点 Linux 网 络 设 备 驱 动 程 序 概 述 计 算 机 网 络 概 述 skbuf 数 据 结 构 介 绍 Linux 网 络 设 备 驱 动 程 序 API 介 绍 Linux 网 络 设 备 驱

More information