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((

Size: px
Start display at page:

Download "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(("

Transcription

1 程序 8-7 linux/kernel/exit.c 1 2 * linux/kernel/exit.c 3 * 4 * (C) 1991 Linus Torvalds #define DEBUG_PROC_TREE // 定义符号 调试进程树 8 9 #include <errno.h> // 错误号头文件 包含系统中各种出错号 (Linus 从 minix 中引进的 ) 10 #include <signal.h> // 信号头文件 定义信号符号常量, 信号结构以及信号操作函数原型 11 #include <sys/wait.h> // 等待调用头文件 定义系统调用 wait() 和 waitpid() 及相关常数符号 #include <linux/sched.h> // 调度程序头文件, 定义了任务结构 task_struct 任务 0 数据等 14 #include <linux/kernel.h> // 内核头文件 含有一些内核常用函数的原形定义 15 #include <linux/tty.h> // tty 头文件, 定义了有关 tty_io, 串行通信方面的参数 常数 16 #include <asm/segment.h> // 段操作头文件 定义了有关段寄存器操作的嵌入式汇编函数 int sys_pause(void); // 把进程置为睡眠状态, 直到收到信号 (kernel/sched.c,164 行 ) 19 int sys_close(int fd); // 关闭指定文件的系统调用 (fs/open.c,219 行 ) 20 //// 释放指定进程占用的任务槽及其任务数据结构占用的内存页面 // 参数 p 是任务数据结构指针 该函数在后面的 sys_kill() 和 sys_waitpid() 函数中被调用 // 扫描任务指针数组表 task[] 以寻找指定的任务 如果找到, 则首先清空该任务槽, 然后释放 // 该任务数据结构所占用的内存页面, 最后执行调度函数并在返回时立即退出 如果在任务数组 // 表中没有找到指定任务对应的项, 则内核 panic 21 void release(struct task_struct * p) 22 { 23 int i; 24 // 如果给定的任务结构指针为 NULL 则退出 如果该指针指向当前进程则显示警告信息退出 25 if (!p) 26 return; 27 if (p == current) { 28 printk("task releasing itself\n\r"); 29 return; 30 } // 扫描任务结构指针数组, 寻找指定的任务 p 如果找到, 则置空任务指针数组中对应项, 并且 // 更新任务结构之间的关联指针, 释放任务 p 数据结构占用的内存页面 最后在执行调度程序 // 返回后退出 如果没有找到指定的任务 p, 则说明内核代码出错了, 则显示出错信息并死机 // 更新链接部分的代码会把指定任务 p 从双向链表中删除 31 for (i=1 ; i<nr_tasks ; i++) 32 if (task[i]==p) { 33 task[i]=null; 34 Update links 更新链接 // 如果 p 不是最后 ( 最老 ) 的子进程, 则让比其老的比邻进程指向比它新的比邻进程 如果 p // 不是最新的子进程, 则让比其新的比邻子进程指向比邻的老进程 如果任务 p 就是最新的 // 子进程, 则还需要更新其父进程的最新子进程指针 cptr 为指向 p 的比邻子进程 // 指针 osptr(old sibling pointer) 指向比 p 先创建的兄弟进程 // 指针 ysptr(younger sibling pointer) 指向比 p 后创建的兄弟进程 // 指针 pptr(parent pointer) 指向 p 的父进程 // 指针 cptr(child pointer) 是父进程指向最新 ( 最后 ) 创建的子进程 35 if (p->p_osptr)

2 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((long)p); 42 schedule(); 43 return; 44 } 45 panic("trying to release non-existent task"); 46 } #ifdef DEBUG_PROC_TREE // 如果定义了符号 DEBUG_PROC_TREE, 则编译时包括以下代码 * Check to see if a task_struct pointer is present in the task[] array 51 * Return 0 if found, and 1 if not found. 52 * 检查 task[] 数组中是否存在一个指定的 task_struct 结构指针 p * 如果存在则返回 0, 否则返回 1 // 检测任务结构指针 p 53 int bad_task_ptr(struct task_struct *p) 54 { 55 int i; if (!p) 58 return 0; 59 for (i=0 ; i<nr_tasks ; i++) 60 if (task[i] == p) 61 return 0; 62 return 1; 63 } * This routine scans the pid tree and make sure the rep invarient still 67 * holds. Used for debugging only, since it's very slow * 69 * It looks a lot scarier than it really is... we're doing nothing more 70 * than verifying the doubly-linked list found in p_ysptr and p_osptr, 71 * and checking it corresponds with the process tree defined by p_cptr and 72 * p_pptr; 73 * 下面的函数用于扫描进程树, 以确定更改过的链接仍然正确 仅用于调式, * 因为该函数比较慢... * * 该函数看上去要比实际的恐怖... 其实我们仅仅验证了指针 p_ysptr 和 * p_osptr 构成的双向链表, 并检查了链表与指针 p_cptr 和 p_pptr 构成的 * 进程树之间的关系 // 检查进程树

3 74 void audit_ptree() 75 { 76 int i; 77 // 扫描系统中的除任务 0 以外的所有任务, 检查它们中 4 个指针 (pptr cptr ysptr 和 osptr) // 的正确性 若任务数组槽 ( 项 ) 为空则跳过 78 for (i=1 ; i<nr_tasks ; i++) { 79 if (!task[i]) 80 continue; // 如果任务的父进程指针 p_pptr 没有指向任何进程 ( 即在任务数组中不存在 ), 则显示警告信息 // 警告,pid 号 N 的父进程链接有问题 以下语句对 cptr ysptr 和 osptr 进行类似操作 81 if (bad_task_ptr(task[i]->p_pptr)) 82 printk("warning, pid %d's parent link is bad\n", 83 task[i]->pid); 84 if (bad_task_ptr(task[i]->p_cptr)) 85 printk("warning, pid %d's child link is bad\n", 86 task[i]->pid); 87 if (bad_task_ptr(task[i]->p_ysptr)) 88 printk("warning, pid %d's ys link is bad\n", 89 task[i]->pid); 90 if (bad_task_ptr(task[i]->p_osptr)) 91 printk("warning, pid %d's os link is bad\n", 92 task[i]->pid); // 如果任务的父进程指针 p_pptr 指向了自己, 则显示警告信息 警告,pid 号 N 的父进程链接 // 指针指向了自己 以下语句对 cptr ysptr 和 osptr 进行类似操作 93 if (task[i]->p_pptr == task[i]) 94 printk("warning, pid %d parent link points to self\n"); 95 if (task[i]->p_cptr == task[i]) 96 printk("warning, pid %d child link points to self\n"); 97 if (task[i]->p_ysptr == task[i]) 98 printk("warning, pid %d ys link points to self\n"); 99 if (task[i]->p_osptr == task[i]) 100 printk("warning, pid %d os link points to self\n"); // 如果任务有比自己先创建的比邻兄弟进程, 那么就检查它们是否有共同的父进程, 并检查这个 // 老兄进程的 ysptr 指针是否正确地指向本进程 否则显示警告信息 101 if (task[i]->p_osptr) { 102 if (task[i]->p_pptr!= task[i]->p_osptr->p_pptr) 103 printk( 104 "Warning, pid %d older sibling %d parent is %d\n", 105 task[i]->pid, task[i]->p_osptr->pid, 106 task[i]->p_osptr->p_pptr->pid); 107 if (task[i]->p_osptr->p_ysptr!= task[i]) 108 printk( 109 "Warning, pid %d older sibling %d has mismatched ys link\n", 110 task[i]->pid, task[i]->p_osptr->pid); 111 } // 如果任务有比自己后创建的比邻兄弟进程, 那么就检查它们是否有共同的父进程, 并检查这个 // 小弟进程的 osptr 指针是否正确地指向本进程 否则显示警告信息 112 if (task[i]->p_ysptr) { 113 if (task[i]->p_pptr!= task[i]->p_ysptr->p_pptr) 114 printk( 115 "Warning, pid %d younger sibling %d parent is %d\n", 116 task[i]->pid, task[i]->p_osptr->pid,

4 117 task[i]->p_osptr->p_pptr->pid); 118 if (task[i]->p_ysptr->p_osptr!= task[i]) 119 printk( 120 "Warning, pid %d younger sibling %d has mismatched os link\n", 121 task[i]->pid, task[i]->p_ysptr->pid); 122 } // 如果任务的最新子进程指针 cptr 不空, 那么检查该子进程的父进程是否是本进程, 并检查该 // 子进程的小弟进程指针 yspter 是否为空 若不是则显示警告信息 123 if (task[i]->p_cptr) { 124 if (task[i]->p_cptr->p_pptr!= task[i]) 125 printk( 126 "Warning, pid %d youngest child %d has mismatched parent link\n", 127 task[i]->pid, task[i]->p_cptr->pid); 128 if (task[i]->p_cptr->p_ysptr) 129 printk( 130 "Warning, pid %d youngest child %d has non-null ys link\n", 131 task[i]->pid, task[i]->p_cptr->pid); 132 } 133 } 134 } 135 #endif DEBUG_PROC_TREE 136 //// 向指定任务 p 发送信号 sig, 权限为 priv // 参数 :sig - 信号值 ;p - 指定任务的指针 ;priv - 强制发送信号的标志 即不需要考虑进程 // 用户属性或级别而能发送信号的权利 该函数首先判断参数的正确性, 然后判断条件是否满足 // 如果满足就向指定进程发送信号 sig 并退出, 否则返回未许可错误号 137 static inline int send_sig(long sig,struct task_struct * p,int priv) 138 { // 如果没有权限, 并且当前进程的有效用户 ID 与进程 p 的不同, 并且也不是超级用户, 则说明 // 没有向 p 发送信号的权利 suser() 定义为 (current->euid==0), 用于判断是否是超级用户 139 if (!p) 140 return -EINVAL; 141 if (!priv && (current->euid!=p->euid) &&!suser()) 142 return -EPERM; // 若需要发送的信号是 SIGKILL 或 SIGCONT, 那么如果此时接收信号的进程 p 正处于停止状态 // 就置其为就绪 ( 运行 ) 状态 然后修改进程 p 的信号位图 signal, 去掉 ( 复位 ) 会导致进程 // 停止的信号 SIGSTOP SIGTSTP SIGTTIN 和 SIGTTOU 143 if ((sig == SIGKILL) (sig == SIGCONT)) { 144 if (p->state == TASK_STOPPED) 145 p->state = TASK_RUNNING; 146 p->exit_code = 0; 147 p->signal &= ~( (1<<(SIGSTOP-1)) (1<<(SIGTSTP-1)) 148 (1<<(SIGTTIN-1)) (1<<(SIGTTOU-1)) ); 149 } 150 If the signal will be ignored, don't even post it 如果要发送的信号 sig 将被进程 p 忽略掉, 那么就根本不用发送 151 if ((int) p->sigaction[sig-1].sa_handler == 1) 152 return 0; 153 Depends on order SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU 以下判断依赖于 SIGSTOP SIGTSTP SIGTTIN 和 SIGTTOU 的次序 // 如果信号是 SIGSTOP SIGTSTP SIGTTIN 和 SIGTTOU 之一, 那么说明要让接收信号的进程 p // 停止运行 因此 ( 若 p 的信号位图中有 SIGCONT 置位 ) 就需要复位位图中继续运行的信号 // SIGCONT 比特位

5 154 if ((sig >= SIGSTOP) && (sig <= SIGTTOU)) 155 p->signal &= ~(1<<(SIGCONT-1)); 156 Actually deliver the signal 最后, 我们向进程 p 发送信号 p 157 p->signal = (1<<(sig-1)); 158 return 0; 159 } 160 // 根据进程组号 pgrp 取得进程组所属的会话号 // 扫描任务数组, 寻找进程组号为 pgrp 的进程, 并返回其会话号 如果没有找到指定进程组号 // 为 pgrp 的任何进程, 则返回 int session_of_pgrp(int pgrp) 162 { 163 struct task_struct **p; for (p = &LAST_TASK ; p > &FIRST_TASK ; --p) 166 if ((*p)->pgrp == pgrp) 167 return((*p)->session); 168 return -1; 169 } 170 // 终止进程组 ( 向进程组发送信号 ) // 参数 :pgrp - 指定的进程组号 ;sig - 指定的信号 ;priv - 权限 // 即向指定进程组 pgrp 中的每个进程发送指定信号 sig 只要向一个进程发送成功最后就会 // 返回 0, 否则如果没有找到指定进程组号 pgrp 的任何一个进程, 则返回出错号 -ESRCH, 若 // 找到进程组号是 pgrp 的进程, 但是发送信号失败, 则返回发送失败的错误码 171 int kill_pg(int pgrp, int sig, int priv) 172 { 173 struct task_struct **p; 174 int err,retval = -ESRCH; // -ESRCH 表示指定的进程不存在 175 int found = 0; 176 // 首先判断给定的信号和进程组号是否有效 然后扫描系统中所有任务 若扫描到进程组号为 // pgrp 的进程, 就向其发送信号 sig 只要有一次信号发送成功, 函数最后就会返回 if (sig<1 sig>32 pgrp<=0) 178 return -EINVAL; 179 for (p = &LAST_TASK ; p > &FIRST_TASK ; --p) 180 if ((*p)->pgrp == pgrp) { 181 if (sig && (err = send_sig(sig,*p,priv))) 182 retval = err; 183 else 184 found++; 185 } 186 return(found? 0 : retval); 187 } 188 // 终止进程 ( 向进程发送信号 ) // 参数 :pid - 进程号 ;sig - 指定信号 ;priv - 权限 // 即向进程号为 pid 的进程发送指定信号 sig 若找到指定 pid 的进程, 那么若信号发送成功, // 则返回 0, 否则返回信号发送出错号 如果没有找到指定进程号 pid 的进程, 则返回出错号 // -ESRCH( 指定进程不存在 ) 189 int kill_proc(int pid, int sig, int priv) 190 {

6 191 struct task_struct **p; if (sig<1 sig>32) 194 return -EINVAL; 195 for (p = &LAST_TASK ; p > &FIRST_TASK ; --p) 196 if ((*p)->pid == pid) 197 return(sig? send_sig(sig,*p,priv) : 0); 198 return(-esrch); 199 } * POSIX specifies that kill(-1,sig) is unspecified, but what we have 203 * is probably wrong. Should make it like BSD or SYSV. 204 * POSIX 标准指明 kill(-1,sig) 未定义 但是我所知道的可能错了 应该让它 * 象 BSD 或 SYSV 系统一样 //// 系统调用 kill() 可用于向任何进程或进程组发送任何信号, 而并非只是杀死进程 // 参数 pid 是进程号 ;sig 是需要发送的信号 // 如果 pid 值 >0, 则信号被发送给进程号是 pid 的进程 // 如果 pid=0, 那么信号就会被发送给当前进程的进程组中所有的进程 // 如果 pid=-1, 则信号 sig 就会发送给除第一个进程 ( 初始进程 ) 外的所有进程 // 如果 pid < -1, 则信号 sig 将发送给进程组 -pid 的所有进程 // 如果信号 sig 为 0, 则不发送信号, 但仍会进行错误检查 如果成功则返回 0 // 该函数扫描任务数组表, 并根据 pid 对满足条件的进程发送指定信号 sig 若 pid 等于 0, // 表明当前进程是进程组组长, 因此需要向所有组内的进程强制发送信号 sig 205 int sys_kill(int pid,int sig) 206 { 207 struct task_struct **p = NR_TASKS + task; // p 指向任务数组最后一项 208 int err, retval = 0; if (!pid) 211 return(kill_pg(current->pid,sig,0)); 212 if (pid == -1) { 213 while (--p > &FIRST_TASK) 214 if (err = send_sig(sig,*p,0)) 215 retval = err; 216 return(retval); 217 } 218 if (pid < 0) 219 return(kill_pg(-pid,sig,0)); 220 Normal kill 221 return(kill_proc(pid,sig,0)); 222 } * Determine if a process group is "orphaned", according to the POSIX 226 * definition in Orphaned process groups are not to be affected 227 * by terminal-generated stop signals. Newly orphaned process groups are 228 * to receive a SIGHUP and a SIGCONT. 229 * 230 * "I ask you, have you ever known what it is to be an orphan?"

7 231 * 根据 POSIX 标准 节中的定义, 确定一个进程组是否是 孤儿 孤儿进程 * 组不会受到终端产生的停止信号的影响 新近产生的孤儿进程组将会收到一个 SIGHUP * 信号和一个 SIGCONT 信号 * * 我问你, 你是否真正知道作为一个孤儿意味着什么? // 以上提到的 POSIX P 节是关于孤儿进程组的描述 在两种情况下当一个进程 // 终止时可能导致进程组变成 孤儿 一个进程组到其组外的父进程之间的联系依赖于该父 // 进程和其子进程两者 因此, 若组外最后一个连接父进程的进程或最后一个父进程的直接后裔 // 终止的话, 那么这个进程组就会成为一个孤儿进程组 在任何一种情况下, 如果进程的终止导 // 致进程组变成孤儿进程组, 那么进程组中的所有进程就会与它们的作业控制 shell 断开联系 // 作业控制 shell 将不再具有该进程组存在的任何信息 而该进程组中处于停止状态的进程将会 // 永远消失 为了解决这个问题, 含有停止状态进程的新近产生的孤儿进程组就需要接收到一个 // SIGHUP 信号和一个 SIGCONT 信号, 用于指示它们已经从它们的会话 ( session) 中断开联系 // SIGHUP 信号将导致进程组中成员被终止, 除非它们捕获或忽略了 SIGHUP 信号 而 SIGCONT 信 // 号将使那些没有被 SIGHUP 信号终止的进程继续运行 但在大多数情况下, 如果组中有一个进 // 程处于停止状态, 那么组中所有的进程可能都处于停止状态 // // 判断一个进程组是否是孤儿进程 如果不是则返回 0; 如果是则返回 1 // 扫描任务数组 如果任务项空, 或者进程的组号与指定的不同, 或者进程已经处于僵死状态, // 或者进程的父进程是 init 进程, 则说明扫描的进程不是指定进程组的成员, 或者不满足要求, // 于是跳过 否则说明该进程是指定组的成员并且其父进程不是 init 进程 此时如果该进程 // 父进程的组号不等于指定的组号 pgrp, 但父进程的会话号等于进程的会话号, 则说明它们同 // 属于一个会话 因此指定的 pgrp 进程组肯定不是孤儿进程组 否则 int is_orphaned_pgrp(int pgrp) 233 { 234 struct task_struct **p; for (p = &LAST_TASK ; p > &FIRST_TASK ; --p) { 237 if (!(*p) 238 ((*p)->pgrp!= pgrp) 239 ((*p)->state == TASK_ZOMBIE) 240 ((*p)->p_pptr->pid == 1)) 241 continue; 242 if (((*p)->p_pptr->pgrp!= pgrp) && 243 ((*p)->p_pptr->session == (*p)->session)) 244 return 0; 245 } 246 return(1); (sighing) "Often!" ( 唉 ) 是孤儿进程组! 247 } 248 // 判断进程组中是否含有处于停止状态的作业 ( 进程组 ) 有则返回 1; 无则返回 0 // 查找方法是扫描整个任务数组 检查属于指定组 pgrp 的任何进程是否处于停止状态 249 static int has_stopped_jobs(int pgrp) 250 { 251 struct task_struct ** p; for (p = &LAST_TASK ; p > &FIRST_TASK ; --p) { 254 if ((*p)->pgrp!= pgrp) 255 continue; 256 if ((*p)->state == TASK_STOPPED)

8 257 return(1); 258 } 259 return(0); 260 } 261 // 程序退出处理函数 在下面 365 行处被系统调用处理函数 sys_exit() 调用 // 该函数将根据当前进程自身的特性对其进行处理, 并把当前进程状态设置成僵死状态 // TASK_ZOMBIE, 最后调用调度函数 schedule() 去执行其它进程, 不再返回 262 volatile void do_exit(long code) 263 { 264 struct task_struct *p; 265 int i; 266 // 首先释放当前进程代码段和数据段所占的内存页 函数 free_page_tables() 的第 1 个参数 // (get_base() 返回值 ) 指明在 CPU 线性地址空间中起始基地址, 第 2 个 (get_limit() 返回值 ) // 说明欲释放的字节长度值 get_base() 宏中的 current->ldt[1] 给出进程代码段描述符的位置 // (current->ldt[2] 给出进程代码段描述符的位置 );get_limit() 中的 0x0f 是进程代码段的 // 选择符 (0x17 是进程数据段的选择符 ) 即在取段基地址时使用该段的描述符所处地址作为 // 参数, 取段长度时使用该段的选择符作为参数 free_page_tables() 函数位于 mm/memory.c // 文件的第 69 行开始处 ;get_base() 和 get_limit() 宏位于 include/linux/sched.h 头文件的第 // 264 行开始处 267 free_page_tables(get_base(current->ldt[1]),get_limit(0x0f)); 268 free_page_tables(get_base(current->ldt[2]),get_limit(0x17)); // 然后关闭当前进程打开着的所有文件 再对当前进程的工作目录 pwd 根目录 root 执行程序 // 文件的 i 节点以及库文件进行同步操作, 放回各个 i 节点并分别置空 ( 释放 ) 接着把当前 // 进程的状态设置为僵死状态 (TASK_ZOMBIE), 并设置进程退出码 269 for (i=0 ; i<nr_open ; i++) 270 if (current->filp[i]) 271 sys_close(i); 272 iput(current->pwd); 273 current->pwd = NULL; 274 iput(current->root); 275 current->root = NULL; 276 iput(current->executable); 277 current->executable = NULL; 278 iput(current->library); 279 current->library = NULL; 280 current->state = TASK_ZOMBIE; 281 current->exit_code = code; * Check to see if any process groups have become orphaned 284 * as a result of our exiting, and if they have any stopped 285 * jobs, send them a SIGUP and then a SIGCONT. (POSIX ) 286 * 287 * Case i: Our father is in a different pgrp than we are 288 * and we were the only connection outside, so our pgrp 289 * is about to become orphaned. 290 * 检查当前进程的退出是否会造成任何进程组变成孤儿进程组 如果 * 有, 并且有处于停止状态 (TASK_STOPPED) 的组员, 则向它们发送 * 一个 SIGHUP 信号和一个 SIGCONT 信号 (POSIX 节要求 ) *

9 * 情况 1: 我们的父进程在另外一个与我们不同的进程组中, 而本进程 * 是我们与外界的唯一联系 所以我们的进程组将变成一个孤儿进程组 // POSIX (1991 版 ) 是关于 exit() 函数的说明 如果父进程所在的进程组与当前进程的 // 不同, 但都处于同一个会话 (session) 中, 并且当前进程所在进程组将要变成孤儿进程了并且 // 当前进程的进程组中含有处于停止状态的作业 ( 进程 ), 那么就要向这个当前进程的进程组发 // 送两个信号 :SIGHUP 和 SIGCONT 发送这两个信号的原因见 232 行前的说明 291 if ((current->p_pptr->pgrp!= current->pgrp) && 292 (current->p_pptr->session == current->session) && 293 is_orphaned_pgrp(current->pgrp) && 294 has_stopped_jobs(current->pgrp)) { 295 kill_pg(current->pgrp,sighup,1); 296 kill_pg(current->pgrp,sigcont,1); 297 } 298 Let father know we died 通知父进程当前进程将终止 299 current->p_pptr->signal = (1<<(SIGCHLD-1)); * This loop does two things: 303 * 304 * A. Make init inherit all the child processes 305 * B. Check to see if any process groups have become orphaned 306 * as a result of our exiting, and if they have any stopped 307 * jons, send them a SIGUP and then a SIGCONT. (POSIX ) 308 * 下面的循环做了两件事情 : * * A. 让 init 进程继承当前进程所有子进程 * B. 检查当前进程的退出是否会造成任何进程组变成孤儿进程组 如果 * 有, 并且有处于停止状态 (TASK_STOPPED) 的组员, 则向它们发送 * 一个 SIGHUP 信号和一个 SIGCONT 信号 (POSIX 节要求 ) // 如果当前进程有子进程 ( 其 p_cptr 指针指向最近创建的子进程 ), 则让进程 1(init 进程 ) // 成为其所有子进程的父进程 如果子进程已经处于僵死状态, 则向 init 进程 ( 父进程 ) 发送 // 子进程已终止信号 SIGCHLD 309 if (p = current->p_cptr) { 310 while (1) { 311 p->p_pptr = task[1]; 312 if (p->state == TASK_ZOMBIE) 313 task[1]->signal = (1<<(SIGCHLD-1)); * process group orphan check 316 * Case ii: Our child is in a different pgrp 317 * than we are, and it was the only connection 318 * outside, so the child pgrp is now orphaned. 319 孤儿进程组检测 * 情况 2: 我们的子进程在不同的进程组中, 而本进程 * 是它们唯一与外界的连接 因此现在子进程所在进程 * 组将变成孤儿进程组了 // 如果子进程与当前进程不在同一个进程组中但属于同一个 session 中, 并且当前进程所在进程

10 // 组将要变成孤儿进程了, 并且当前进程的进程组中含有处于停止状态的作业 ( 进程 ), 那么就 // 要向这个当前进程的进程组发送两个信号 :SIGHUP 和 SIGCONT 如果该子进程有兄弟进程, // 则继续循环处理这些兄弟进程 320 if ((p->pgrp!= current->pgrp) && 321 (p->session == current->session) && 322 is_orphaned_pgrp(p->pgrp) && 323 has_stopped_jobs(p->pgrp)) { 324 kill_pg(p->pgrp,sighup,1); 325 kill_pg(p->pgrp,sigcont,1); 326 } 327 if (p->p_osptr) { 328 p = p->p_osptr; 329 continue; 330 } * This is it; link everything into init's children 333 * and leave 334 * 就这样 : 将所有子进程链接成为 init 的子进程并退出循环 // 通过上面处理, 当前进程子进程的所有兄弟子进程都已经处理过 此时 p 指向最老的兄弟子 // 进程 于是把这些兄弟子进程全部加入 init 进程的子进程双向链表头部中 加入后,init // 进程的 p_cptr 指向当前进程原子进程中最年轻的 (the youngest) 子进程, 而原子进程中 // 最老的 (the oldest) 兄弟子进程 p_osptr 指向原 init 进程的最年轻进程, 而原 init 进 // 程中最年轻进程的 p_ysptr 指向原子进程中最老的兄弟子进程 最后把当前进程的 p_cptr // 指针置空, 并退出循环 335 p->p_osptr = task[1]->p_cptr; 336 task[1]->p_cptr->p_ysptr = p; 337 task[1]->p_cptr = current->p_cptr; 338 current->p_cptr = 0; 339 break; 340 } 341 } // 如果当前进程是会话头领 (leader) 进程, 那么若它有控制终端, 则首先向使用该控制终端的 // 进程组发送挂断信号 SIGHUP, 然后释放该终端 接着扫描任务数组, 把属于当前进程会话中 // 进程的终端置空 ( 取消 ) 342 if (current->leader) { 343 struct task_struct **p; 344 struct tty_struct *tty; if (current->tty >= 0) { 347 tty = TTY_TABLE(current->tty); 348 if (tty->pgrp>0) 349 kill_pg(tty->pgrp, SIGHUP, 1); 350 tty->pgrp = 0; 351 tty->session = 0; 352 } 353 for (p = &LAST_TASK ; p > &FIRST_TASK ; --p) 354 if ((*p)->session == current->session) 355 (*p)->tty = -1; 356 } // 如果当前进程上次使用过协处理器, 则把记录此信息的指针置空 若定义了调试进程树符号,

11 // 则调用进程树检测显示函数 最后调用调度函数, 重新调度进程运行, 以让父进程能够处理 // 僵死进程的其它善后事宜 357 if (last_task_used_math == current) 358 last_task_used_math = NULL; 359 #ifdef DEBUG_PROC_TREE 360 audit_ptree(); 361 #endif 362 schedule(); 363 } 364 // 系统调用 exit() 终止进程 // 参数 error_code 是用户程序提供的退出状态信息, 只有低字节有效 把 error_code 左移 8 // 比特是 wait() 或 waitpid() 函数的要求 低字节中将用来保存 wait() 的状态信息 例如, // 如果进程处于暂停状态 (TASK_STOPPED), 那么其低字节就等于 0x7f 参见 sys/wait.h // 文件第 行 wait() 或 waitpid() 利用这些宏就可以取得子进程的退出状态码或子 // 进程终止的原因 ( 信号 ) 365 int sys_exit(int error_code) 366 { 367 do_exit((error_code&0xff)<<8); 368 } 369 // 系统调用 waitpid() 挂起当前进程, 直到 pid 指定的子进程退出 ( 终止 ) 或者收到要求终止 // 该进程的信号, 或者是需要调用一个信号句柄 ( 信号处理程序 ) 如果 pid 所指的子进程早已 // 退出 ( 已成所谓的僵死进程 ), 则本调用将立刻返回 子进程使用的所有资源将释放 // 如果 pid > 0, 表示等待进程号等于 pid 的子进程 // 如果 pid = 0, 表示等待进程组号等于当前进程组号的任何子进程 // 如果 pid < -1, 表示等待进程组号等于 pid 绝对值的任何子进程 // 如果 pid = -1, 表示等待任何子进程 // 若 options = WUNTRACED, 表示如果子进程是停止的, 也马上返回 ( 无须跟踪 ) // 若 options = WNOHANG, 表示如果没有子进程退出或终止就马上返回 // 如果返回状态指针 stat_addr 不为空, 则就将状态信息保存到那里 // 参数 pid 是进程号 ;*stat_addr 是保存状态信息位置的指针 ;options 是 waitpid 选项 370 int sys_waitpid(pid_t pid,unsigned long * stat_addr, int options) 371 { 372 int flag; // 该标志用于后面表示所选出的子进程处于就绪或睡眠态 373 struct task_struct *p; 374 unsigned long oldblocked; 375 // 首先验证将要存放状态信息的位置处内存空间足够 然后复位标志 flag 接着从当前进程的最 // 年轻子进程开始扫描子进程兄弟链表 376 verify_area(stat_addr,4); 377 repeat: 378 flag=0; 379 for (p = current->p_cptr ; p ; p = p->p_osptr) { // 如果等待的子进程号 pid>0, 但与被扫描子进程 p 的 pid 不相等, 说明它是当前进程另外的子 // 进程, 于是跳过该进程, 接着扫描下一个进程 380 if (pid>0) { 381 if (p->pid!= pid) 382 continue; // 否则, 如果指定等待进程的 pid=0, 表示正在等待进程组号等于当前进程组号的任何子进程 // 如果此时被扫描进程 p 的进程组号与当前进程的组号不等, 则跳过 383 } else if (!pid) { 384 if (p->pgrp!= current->pgrp)

12 385 continue; // 否则, 如果指定的 pid < -1, 表示正在等待进程组号等于 pid 绝对值的任何子进程 如果此时 // 被扫描进程 p 的组号与 pid 的绝对值不等, 则跳过 386 } else if (pid!= -1) { 387 if (p->pgrp!= -pid) 388 continue; 389 } // 如果前 3 个对 pid 的判断都不符合, 则表示当前进程正在等待其任何子进程, 也即 pid = -1 // 的情况 此时所选择到的进程 p 或者是其进程号等于指定 pid, 或者是当前进程组中的任何 // 子进程, 或者是进程号等于指定 pid 绝对值的子进程, 或者是任何子进程 ( 此时指定的 pid // 等于 -1) 接下来根据这个子进程 p 所处的状态来处理 // 当子进程 p 处于停止状态时, 如果此时参数选项 options 中 WUNTRACED 标志没有置位, 表示 // 程序无须立刻返回, 或者子进程此时的退出码等于 0, 于是继续扫描处理其他子进程 如果 // WUNTRACED 置位且子进程退出码不为 0, 则把退出码移入高字节, 或上状态信息 0x7f 后放入 // *stat_addr, 在复位子进程退出码后就立刻返回子进程号 pid 这里 0x7f 表示的返回状态使 // WIFSTOPPED() 宏为真 参见 include/sys/wait.h,14 行 390 switch (p->state) { 391 case TASK_STOPPED: 392 if (!(options & WUNTRACED) 393!p->exit_code) 394 continue; 395 put_fs_long((p->exit_code << 8) 0x7f, 396 stat_addr); 397 p->exit_code = 0; 398 return p->pid; // 如果子进程 p 处于僵死状态, 则首先把它在用户态和内核态运行的时间分别累计到当前进程 // ( 父进程 ) 中, 然后取出子进程的 pid 和退出码, 把退出码放入返回状态位置 stat_addr 处 // 并释放该子进程 最后返回子进程的退出码和 pid 若定义了调试进程树符号, 则调用进程 // 树检测显示函数 399 case TASK_ZOMBIE: 400 current->cutime += p->utime; 401 current->cstime += p->stime; 402 flag = p->pid; 403 put_fs_long(p->exit_code, stat_addr); 404 release(p); 405 #ifdef DEBUG_PROC_TREE 406 audit_ptree(); 407 #endif 408 return flag; // 如果这个子进程 p 的状态既不是停止也不是僵死, 那么就置 flag = 1 表示找到过一个符合 // 要求的子进程, 但是它处于运行态或睡眠态 409 default: 410 flag=1; 411 continue; 412 } 413 } // 在上面对任务数组扫描结束后, 如果 flag 被置位, 说明有符合等待要求的子进程并没有处 // 于退出或僵死状态 此时如果已设置 WNOHANG 选项 ( 表示若没有子进程处于退出或终止态就 // 立刻返回 ), 就立刻返回 0, 退出 否则把当前进程置为可中断等待状态并, 保留并修改 // 当前进程信号阻塞位图, 允许其接收到 SIGCHLD 信号 然后执行调度程序 当系统又开始 // 执行本进程时, 如果本进程收到除 SIGCHLD 以外的其他未屏蔽信号, 则以退出码 重新启 // 动系统调用 返回 否则跳转到函数开始处 repeat 标号处重复处理 414 if (flag) {

13 415 if (options & WNOHANG) 416 return 0; 417 current->state=task_interruptible; 418 oldblocked = current->blocked; 419 current->blocked &= ~(1<<(SIGCHLD-1)); 420 schedule(); 421 current->blocked = oldblocked; 422 if (current->signal & ~(current->blocked (1<<(SIGCHLD-1)))) 423 return -ERESTARTSYS; 424 else 425 goto repeat; 426 } // 若 flag = 0, 表示没有找到符合要求的子进程, 则返回出错码 ( 子进程不存在 ) 427 return -ECHILD; 428 } 429

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

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

多进程管理副本.key

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

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

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

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

More information

<4D6963726F736F667420576F7264202D2032303130C4EAC0EDB9A4C0E04142BCB6D4C4B6C1C5D0B6CFC0FDCCE2BEABD1A15F325F2E646F63>

<4D6963726F736F667420576F7264202D2032303130C4EAC0EDB9A4C0E04142BCB6D4C4B6C1C5D0B6CFC0FDCCE2BEABD1A15F325F2E646F63> 2010 年 理 工 类 AB 级 阅 读 判 断 例 题 精 选 (2) Computer mouse How does the mouse work? We have to start at the bottom, so think upside down for now. It all starts with mouse ball. As the mouse ball in the bottom

More information

Microsoft PowerPoint - os_4.ppt

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

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

Microsoft Word - 第四組心得.doc

Microsoft Word - 第四組心得.doc 徐 婉 真 這 四 天 的 綠 島 人 權 體 驗 營 令 我 印 象 深 刻, 尤 其 第 三 天 晚 上 吳 豪 人 教 授 的 那 堂 課, 他 讓 我 聽 到 不 同 於 以 往 的 正 義 之 聲 轉 型 正 義, 透 過 他 幽 默 熱 情 的 語 調 激 起 了 我 對 政 治 的 興 趣, 願 意 在 未 來 多 關 心 社 會 多 了 解 政 治 第 一 天 抵 達 綠 島 不 久,

More information

第6章 信号量,中断和时间

第6章  信号量,中断和时间 6 6 Signal IPC POSIX Unix IPC Ctrl+C 9 IPC Linux Interrupt 5 Linux Linux CPU Linux Linux include/asm-i386/spinlock.h 12582 #ifdef UP SMP UP SMP 10 SMP Linux Nonrealtime SIGSEGVSIGHUP - - 52 6 SIGKILL realtime

More information

星河33期.FIT)

星河33期.FIT) 大 事 记 渊 2011.11 要 要 2011.12 冤 1 尧 11 月 25 日 下 午 袁 白 银 区 首 届 中 小 学 校 长 论 坛 在 我 校 举 行 遥 2 尧 在 甘 肃 省 2011 年 野 十 一 五 冶 规 划 课 题 集 中 鉴 定 中 袁 我 校 教 师 郝 香 梅 负 责 的 课 题 叶 英 语 课 堂 的 艺 术 性 研 究 曳 袁 张 宏 林 负 责 的 叶 白

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

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

Microsoft Word - 11月電子報1130.doc

Microsoft Word - 11月電子報1130.doc 發 行 人 : 楊 進 成 出 刊 日 期 2008 年 12 月 1 日, 第 38 期 第 1 頁 / 共 16 頁 封 面 圖 話 來 來 來, 來 葳 格 ; 玩 玩 玩, 玩 數 學 在 11 月 17 到 21 日 這 5 天 裡 每 天 一 個 題 目, 孩 子 們 依 據 不 同 年 段, 尋 找 屬 於 自 己 的 解 答, 這 些 數 學 題 目 和 校 園 情 境 緊 緊 結

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

穨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

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

PowerPoint Presentation

PowerPoint Presentation 数据结构与算法 ( 六 ) 张铭主讲 采用教材 : 张铭, 王腾蛟, 赵海燕编写高等教育出版社,2008. 6 ( 十一五 国家级规划教材 ) http://www.jpk.pku.edu.cn/pkujpk/course/sjjg 第 6 章树 C 树的定义和基本术语 树的链式存储结构 子结点表 表示方法 静态 左孩子 / 右兄弟 表示法 动态表示法 动态 左孩子 / 右兄弟 表示法 父指针表示法及其在并查集中的应用

More information

第六章

第六章 Reflection and Serving Learning 長 庚 科 技 大 學 護 理 系 劉 杏 元 一 服 務 學 習 為 何 要 反 思 All those things that we had to do for the service-learning, each one, successively helped me pull together what I d learned.

More information

C o n t e n t s...7... 15 1. Acceptance... 17 2. Allow Love... 19 3. Apologize... 21 4. Archangel Metatron... 23 5. Archangel Michael... 25 6. Ask for

C o n t e n t s...7... 15 1. Acceptance... 17 2. Allow Love... 19 3. Apologize... 21 4. Archangel Metatron... 23 5. Archangel Michael... 25 6. Ask for Doreen Virtue, Ph.D. Charles Virtue C o n t e n t s...7... 15 1. Acceptance... 17 2. Allow Love... 19 3. Apologize... 21 4. Archangel Metatron... 23 5. Archangel Michael... 25 6. Ask for a Sign... 27 7.

More information

99 學年度班群總介紹 第 370 期 班群總導 陳怡靜 G45 班群總導 陳怡靜(河馬) A 家 惠如 家浩 T 格 宜蓁 小 霖 怡 家 M 璇 均 蓁 雴 家 數學領域 珈玲 國燈 370-2 英領域 Kent

99 學年度班群總介紹 第 370 期 班群總導 陳怡靜 G45 班群總導 陳怡靜(河馬) A 家 惠如 家浩 T 格 宜蓁 小 霖 怡 家 M 璇 均 蓁 雴 家 數學領域 珈玲 國燈 370-2 英領域 Kent 2010 年 8 月 27 日 出 刊 精 緻 教 育 宜 蘭 縣 公 辦 民 營 人 國 民 中 小 學 財 團 法 人 人 適 性 教 育 基 金 會 承 辦 地 址 : 宜 蘭 縣 26141 頭 城 鎮 雅 路 150 號 (03)977-3396 http://www.jwps.ilc.edu.tw 健 康 VS. 學 習 各 位 合 夥 人 其 實 都 知 道, 我 是 個 胖 子, 而

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

新版 明解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

hks298cover&back

hks298cover&back 2957 6364 2377 3300 2302 1087 www.scout.org.hk scoutcraft@scout.org.hk 2675 0011 5,500 Service and Scouting Recently, I had an opportunity to learn more about current state of service in Hong Kong

More information

[ 13 年 12 月 06 日, 下 午 6 点 24 分 ] Intel Hosts 新 加 入 的 同 学 们, 快 去 听 听 在 线 宣 讲 会 哦, 同 时 完 成 页 面 下 方 有 奖 调 查, 就 有 资 格 参 与 大 奖 抽 取 啦! [ 13 年 12 月 06 日, 下 午

[ 13 年 12 月 06 日, 下 午 6 点 24 分 ] Intel Hosts 新 加 入 的 同 学 们, 快 去 听 听 在 线 宣 讲 会 哦, 同 时 完 成 页 面 下 方 有 奖 调 查, 就 有 资 格 参 与 大 奖 抽 取 啦! [ 13 年 12 月 06 日, 下 午 China Career Fair: To Know a Different Intel Time Participants Chat Transcript [ 13 年 12 月 06 日, 下 午 6 点 00 分 ] Participant Hi [ 13 年 12 月 06 日, 下 午 6 点 00 分 ] Intel Hosts 大 家 好! [ 13 年 12 月 06 日, 下 午

More information

Microsoft Word - 20100526_編者序.doc

Microsoft Word - 20100526_編者序.doc 編 者 序 我 一 定 要 功 成 名 就, 才 參 加 同 學 會. 一 位 大 學 同 學 曾 經 這 麼 勵 志 地 對 我 說, 直 到 今 天, 我 都 忘 不 了 他 那 堅 定 的 神 色, 但 也 直 到 今 天, 我 猶 不 懂, 為 什 麼 參 加 同 學 會 必 須 功 成 名 就? 為 什 麼 要 辦 同 學 會? 為 什 麼 要 出 什 麼 紀 念 小 集? 如 果 你 這

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

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

IntelBook_cn.doc

IntelBook_cn.doc 3.3.3 信号 (Signal) 处理 信号 (signal) 是向进程发送的软件通知, 通知进程有事件发生 引发信号的事件发生时, 信号就被生成 (generate) 了 进程根据信号采取行动时, 信号就被传递 (deliver) 了 信号的寿命 (lifetime) 就是信号的生成和传递之间的时间间隔 已经生成但还未被传递的信号被称为挂起 (pending) 的信号 在信号生成和信号传递之间可能会有相当长的时间

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

東吳大學

東吳大學 律 律 論 論 療 行 The Study on Medical Practice and Coercion 林 年 律 律 論 論 療 行 The Study on Medical Practice and Coercion 林 年 i 讀 臨 療 留 館 讀 臨 律 六 礪 讀 不 冷 療 臨 年 裡 歷 練 禮 更 老 林 了 更 臨 不 吝 麗 老 劉 老 論 諸 見 了 年 金 歷 了 年

More information

徐汇教育214/3月刊 重 点 关 注 高中生异性交往的小团体辅导 及效果研究 颜静红 摘 要 采用人际关系综合诊断量表 郑日昌编制并 与同性交往所不能带来的好处 带来稳定感和安全感 能 修订 对我校高一学生进行问卷测量 实验组前后测 在 够度过更快乐的时光 获得与别人友好相处的经验 宽容 量表总分和第 4 项因子分 异性交往困扰 上均有显著差 大度和理解力得到发展 得到掌握社会技术的机会 得到 异

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

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

前 言 首 先, 感 謝 你 購 買 了 Linux LPIC Level I + Novell CLA 11 這 本 書, 這 本 書 是 全 球 第 一 本 以 Novell SUSE Linux Enterprise Server 來 分 析 兩 大 Linux 認 證 的 自 學 手 冊 目 前 訪 間 充 斥 著 許 多 Linux 作 業 系 統 的 教 學 手 冊 考 照 的 書 籍,

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

國立中山大學學位論文典藏

國立中山大學學位論文典藏 I II III IV The theories of leadership seldom explain the difference of male leaders and female leaders. Instead of the assumption that the leaders leading traits and leading styles of two sexes are the

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

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

( 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

static struct file_operations gpio_ctl_fops={ ioctl: gpio_ctl_ioctl, open : gpio_open, release: gpio_release, ; #defineled1_on() (GPBDAT &= ~0x1) #def

static struct file_operations gpio_ctl_fops={ ioctl: gpio_ctl_ioctl, open : gpio_open, release: gpio_release, ; #defineled1_on() (GPBDAT &= ~0x1) #def Kaise s 2410 Board setting [1]. Device Driver Device Driver Linux s Kernel ARM s kernel s3c2410_kernel2.4.18_r1.1_change.tar.bz2 /usr/src (1) #cd /usr/src (2) #tar xfj s3c2410_kernel2.4.18_r1.1_change.tar.bz2

More information

Love Actually 真 的 戀 愛 了!? 焦 點 主 題 2035 年 一 個 寒 冷 卻 又 放 晴 的 下 午, 爸 媽 一 大 清 早 已 上 班, 只 得 小 奈 獨 個 兒 待 在 家 中, 奢 侈 地 享 受 著 她 的 春 節 假 期 剛 度 過 了 期 考 的 艱 苦 歲

Love Actually 真 的 戀 愛 了!? 焦 點 主 題 2035 年 一 個 寒 冷 卻 又 放 晴 的 下 午, 爸 媽 一 大 清 早 已 上 班, 只 得 小 奈 獨 個 兒 待 在 家 中, 奢 侈 地 享 受 著 她 的 春 節 假 期 剛 度 過 了 期 考 的 艱 苦 歲 愛 情, 每 一 個 人 都 十 分 渴 望 有 的, 不 論 成 年 人 還 是 中 學 生 但 是, 你 知 道 甚 麼 是 愛 情 嗎? 如 何 才 可 以 擁 有 真 正 的 愛 情? 池 田 先 生 對 愛 情 方 面 有 些 甚 麼 指 導 呢? 01 焦 點 主 題 Love Actually... 真 的 戀 愛 了!? 09 Love Song 11 女 未 來 部 長 專 訪 15

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

中 國 學 研 究 期 刊 泰 國 農 業 大 學 บ นทอนเช นก น และส งผลก บการด ดแปลงจากวรรณกรรมมาเป นบทภาพยนตร และบทละคร โทรท ศน ด วยเช นก น จากการเคารพวรรณกรรมต นฉบ บเป นหล

中 國 學 研 究 期 刊 泰 國 農 業 大 學 บ นทอนเช นก น และส งผลก บการด ดแปลงจากวรรณกรรมมาเป นบทภาพยนตร และบทละคร โทรท ศน ด วยเช นก น จากการเคารพวรรณกรรมต นฉบ บเป นหล วารสารจ นศ กษา มหาว ทยาล ยเกษตรศาสตร การเล อกสรรของย คสม ยท แตกต างก น โดยว เคราะห การด ดแปลง บทละครโทรท ศน หร อบทภาพยนต จากผลงานคลาสส กวรรณกรรม สม ยใหม ของจ น The Choice of Times Film Adaptation of Chinese

More information

Microsoft Word - No_HK2012-1.doc

Microsoft Word - No_HK2012-1.doc No. 2012-1 2012 1 9 ********************************************************* 1 鄧 英 淘 : 為 了 多 數 人 的 現 代 化 緣 於 再 版 鄧 英 淘 著 新 發 展 方 式 與 中 國 的 未 來, 2 2011 年 8~9 月, 我 們 在 301 醫 院 和 鄧 英 淘 進 行 了 一 系 列 訪 談, 根

More information

(Microsoft Word - 10\246~\253\327\262\304\244@\264\301\256\325\260T_Version4)

(Microsoft Word - 10\246~\253\327\262\304\244@\264\301\256\325\260T_Version4) 聖 公 會 仁 立 紀 念 小 學 聖 公 會 仁 立 紀 念 小 學 校 園 通 訊 2010 年 度 第 一 期 第 1 頁 \\\\ 校 園 通 訊 2010-2011 年 度 第 一 期 鄭 秀 薇 總 校 長 在 日 本, 有 一 個 傳 說 故 事 是 這 樣 說 的 : 有 一 對 仁 慈 的 老 夫 婦, 生 活 窮 困, 靠 賣 木 柴 過 活 一 天 老 人 在 同 情 心 的

More information

untitled

untitled 20 1 66 1 20 2 66 2 20 3 66 N WAKIN 20 WAKIN 20 20 20 3 20 4 66 4 20 5 66 Dear Wakin, I m a Chinese girl living in Denmark together with my parents. I started to listen to your music at the age of 14 and

More information

<4D6963726F736F667420506F776572506F696E74202D20A46ABEC7A6DBBFECB5FBC5B2AABAC0B3A6B3A740ACB0BB50B9EAB0C8B1B4AA522E70707478>

<4D6963726F736F667420506F776572506F696E74202D20A46ABEC7A6DBBFECB5FBC5B2AABAC0B3A6B3A740ACB0BB50B9EAB0C8B1B4AA522E70707478> 大 學 自 辦 評 鑑 的 應 有 作 為 與 實 務 探 析 主 講 人 : 曾 淑 惠 國 立 臺 北 科 技 大 學 技 術 及 職 業 教 育 研 究 所 教 授 兼 人 文 與 社 會 科 學 學 院 院 長 報 告 大 綱 1 2 3 4 5 大 學 自 辦 評 鑑 的 理 念 當 前 大 學 自 辦 評 鑑 的 核 心 議 題 大 學 自 辦 評 鑑 的 應 有 作 為 大 學 自 辦

More information

< F5FB77CB6BCBD672028B0B6A46AABE4B751A874A643295F5FB8D5C5AA28A668ADB6292E706466>

< F5FB77CB6BCBD672028B0B6A46AABE4B751A874A643295F5FB8D5C5AA28A668ADB6292E706466> A A A A A i A A A A A A A ii Introduction to the Chinese Editions of Great Ideas Penguin s Great Ideas series began publication in 2004. A somewhat smaller list is published in the USA and a related, even

More information

TX-NR3030_BAS_Cs_ indd

TX-NR3030_BAS_Cs_ indd TX-NR3030 http://www.onkyo.com/manual/txnr3030/adv/cs.html Cs 1 2 3 Speaker Cable 2 HDMI OUT HDMI IN HDMI OUT HDMI OUT HDMI OUT HDMI OUT 1 DIGITAL OPTICAL OUT AUDIO OUT TV 3 1 5 4 6 1 2 3 3 2 2 4 3 2 5

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

Microsoft Word doc

Microsoft Word doc 中 考 英 语 科 考 试 标 准 及 试 卷 结 构 技 术 指 标 构 想 1 王 后 雄 童 祥 林 ( 华 中 师 范 大 学 考 试 研 究 院, 武 汉,430079, 湖 北 ) 提 要 : 本 文 从 结 构 模 式 内 容 要 素 能 力 要 素 题 型 要 素 难 度 要 素 分 数 要 素 时 限 要 素 等 方 面 细 致 分 析 了 中 考 英 语 科 试 卷 结 构 的

More information

可 愛 的 動 物 小 五 雷 雅 理 第 一 次 小 六 甲 黃 駿 朗 今 年 暑 假 發 生 了 一 件 令 人 非 常 難 忘 的 事 情, 我 第 一 次 參 加 宿 營, 離 開 父 母, 自 己 照 顧 自 己, 出 發 前, 我 的 心 情 十 分 緊 張 當 到 達 目 的 地 後

可 愛 的 動 物 小 五 雷 雅 理 第 一 次 小 六 甲 黃 駿 朗 今 年 暑 假 發 生 了 一 件 令 人 非 常 難 忘 的 事 情, 我 第 一 次 參 加 宿 營, 離 開 父 母, 自 己 照 顧 自 己, 出 發 前, 我 的 心 情 十 分 緊 張 當 到 達 目 的 地 後 郭家朗 許鈞嵐 劉振迪 樊偉賢 林洛鋒 第 36 期 出版日期 28-3-2014 出版日期 28-3-2014 可 愛 的 動 物 小 五 雷 雅 理 第 一 次 小 六 甲 黃 駿 朗 今 年 暑 假 發 生 了 一 件 令 人 非 常 難 忘 的 事 情, 我 第 一 次 參 加 宿 營, 離 開 父 母, 自 己 照 顧 自 己, 出 發 前, 我 的 心 情 十 分 緊 張 當 到 達 目

More information

Lorem ipsum dolor sit amet, consectetuer adipiscing elit

Lorem ipsum dolor sit amet, consectetuer adipiscing elit English for Study in Australia 留 学 澳 洲 英 语 讲 座 Lesson 3: Make yourself at home 第 三 课 : 宾 至 如 归 L1 Male: 各 位 朋 友 好, 欢 迎 您 收 听 留 学 澳 洲 英 语 讲 座 节 目, 我 是 澳 大 利 亚 澳 洲 广 播 电 台 的 节 目 主 持 人 陈 昊 L1 Female: 各 位

More information

FY.DOC

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

More information

附 件 三 高 雄 市 政 府 及 所 屬 各 機 關 公 務 出 國 報 告 書 審 核 表 出 國 報 告 書 名 稱 :105 年 長 野 縣 茅 野 市 姐 妹 校 交 流 活 動 出 國 人 員 姓 名 (2 人 以 上, 以 1 人 為 代 表 ) 職 稱 服 務 單 位 洪 薏 婷 教

附 件 三 高 雄 市 政 府 及 所 屬 各 機 關 公 務 出 國 報 告 書 審 核 表 出 國 報 告 書 名 稱 :105 年 長 野 縣 茅 野 市 姐 妹 校 交 流 活 動 出 國 人 員 姓 名 (2 人 以 上, 以 1 人 為 代 表 ) 職 稱 服 務 單 位 洪 薏 婷 教 附 件 二 高 雄 市 政 府 公 務 出 國 報 告 書 ( 出 國 類 別 : 國 際 教 育 旅 行 ) 105 年 長 野 縣 茅 野 市 姐 妹 校 交 流 活 動 服 務 機 關 : 高 雄 市 立 新 興 高 級 中 學 高 雄 市 立 五 福 國 民 中 學 高 雄 市 立 光 華 國 民 中 學 高 雄 市 立 國 昌 國 民 中 學 高 雄 市 立 旗 山 國 民 中 學 姓 名

More information

曹美秀.pdf

曹美秀.pdf 2006 3 219 256 (1858-1927) (1846-1894) 1 2 3 1 1988 70 2 1998 51 3 5 1991 12 37-219- 4 5 6 7 8 9 10 11 12 13 14 15 4 1998 5 1998 6 1988 7 1994 8 1995 725-732 9 1987 170 10 52 11 1994 121 12 2000 51 13

More information

<4D6963726F736F667420506F776572506F696E74202D20312EB9FEB6FBB1F5B9A4D2B5B4F3D1A7D5E7C1BCA3BAC3E6CFF2D1D0BEBFC9FAB8B4CAD4B5C4BDE1B9B9BBAFC3E6CAD4BFBCBACBCCBDCBF7D3EBCAB5BCF92E707074205BBCE6C8DDC4A3CABD5D>

<4D6963726F736F667420506F776572506F696E74202D20312EB9FEB6FBB1F5B9A4D2B5B4F3D1A7D5E7C1BCA3BAC3E6CFF2D1D0BEBFC9FAB8B4CAD4B5C4BDE1B9B9BBAFC3E6CAD4BFBCBACBCCBDCBF7D3EBCAB5BCF92E707074205BBCE6C8DDC4A3CABD5D> 面 向 研 究 生 复 试 的 结 构 化 面 试 考 核 探 索 与 实 践 哈 尔 滨 工 业 大 学 甄 良 2015 年 11 月 5 日 一 背 景 情 况 ( 一 ) 研 究 生 招 生 的 政 策 背 景 招 生 是 一 个 教 育 热 点, 也 是 一 个 社 会 热 点 国 家 重 要 的 教 育 领 域 改 革 文 件 都 对 招 生 改 革 出 了 明 确 要 求 国 务 院

More information

2/80 2

2/80 2 2/80 2 3/80 3 DSP2400 is a high performance Digital Signal Processor (DSP) designed and developed by author s laboratory. It is designed for multimedia and wireless application. To develop application

More information

_汪_文前新ok[3.1].doc

_汪_文前新ok[3.1].doc 普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向

More information

Microsoft Word - TIP006SCH Uni-edit Writing Tip - Presentperfecttenseandpasttenseinyourintroduction readytopublish

Microsoft Word - TIP006SCH Uni-edit Writing Tip - Presentperfecttenseandpasttenseinyourintroduction readytopublish 我 难 度 : 高 级 对 们 现 不 在 知 仍 道 有 听 影 过 响 多 少 那 次 么 : 研 英 究 过 文 论 去 写 文 时 作 的 表 技 引 示 巧 言 事 : 部 情 引 分 发 言 该 生 使 在 中 用 过 去, 而 现 在 完 成 时 仅 表 示 事 情 发 生 在 过 去, 并 的 哪 现 种 在 时 完 态 成 呢 时? 和 难 过 道 去 不 时 相 关? 是 所 有

More information

9 21-40 2004 12 * * 22 9 1 2 3 1 1992 2 1960 2 3 1984 8 87 23 4 5 1697 AD 1779 6 7 8 9 10 11 12 4 1977 109-112 5 87 41993 13-38 6 614 7 8 632 9 1974 8 10 631 11 12 632 9 24 13 14 13 1990 14 25 15 16 15

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

〇〇考區105年國中教育會考簡章

〇〇考區105年國中教育會考簡章 高 雄 考 區 105 年 國 中 教 育 會 考 簡 章 核 定 文 號 : 高 雄 市 政 府 教 育 局 104 年 12 月 28 日 高 市 教 高 字 字 第 10438650500 號 函 中 華 民 國 105 年 1 月 15 日 高 雄 考 區 105 年 國 中 教 育 會 考 試 務 會 編 印 主 辦 學 校 : 國 立 岡 山 高 級 中 學 地 址 :82041 高 雄

More information

Prasenjit Duara 3 nation state Northwestern Journal of Ethnology 4 1. A C M J M M

Prasenjit Duara 3 nation state Northwestern Journal of Ethnology 4 1. A C M J M M N.W.J.E 1001-5558 2012 02-0115-14 C95 A 1945 N. W. Journal of Ethnology 2012 2 73 2012.No.2 Total No.73 1 2 56 Prasenjit Duara 3 nation state Northwestern Journal of Ethnology 4 1. A C 1945. 2 1905. M.

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

4. 每 组 学 生 将 写 有 习 语 和 含 义 的 两 组 卡 片 分 别 洗 牌, 将 顺 序 打 乱, 然 后 将 两 组 卡 片 反 面 朝 上 置 于 课 桌 上 5. 学 生 依 次 从 两 组 卡 片 中 各 抽 取 一 张, 展 示 给 小 组 成 员, 并 大 声 朗 读 卡

4. 每 组 学 生 将 写 有 习 语 和 含 义 的 两 组 卡 片 分 别 洗 牌, 将 顺 序 打 乱, 然 后 将 两 组 卡 片 反 面 朝 上 置 于 课 桌 上 5. 学 生 依 次 从 两 组 卡 片 中 各 抽 取 一 张, 展 示 给 小 组 成 员, 并 大 声 朗 读 卡 Tips of the Week 课 堂 上 的 英 语 习 语 教 学 ( 二 ) 2015-04-19 吴 倩 MarriottCHEI 大 家 好! 欢 迎 来 到 Tips of the Week! 这 周 我 想 和 老 师 们 分 享 另 外 两 个 课 堂 上 可 以 开 展 的 英 语 习 语 教 学 活 动 其 中 一 个 活 动 是 一 个 充 满 趣 味 的 游 戏, 另 外

More information

98性別平等.indb

98性別平等.indb 98性別平等.indb 85 2009/12/11 8:45:27 PM 分手暴力議題 分手暴力議題 指導 考 試 院 撰稿 現代婦女基金會 黃富源委員 姚淑文執行長 壹 目標宗旨 根據美國 香港的相關調查 一再顯示年齡介乎於16至24歲的年輕女性最容易遭受戀愛暴 力 而最嚴重的暴力傷害則發生在分手的過程 現代婦女基金會曾在2008年的調查中發現 每 月平均就有14.7件戀愛暴力 分手暴力和情殺的新聞事件被報導

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

89???????q?l?????T??

89???????q?l?????T?? 華 興 電 子 報 第 89 期 民 國 102 年 01 月 12 日 出 刊 網 址 :www.hhhs.tp.edu.tw 發 行 人 : 高 宏 煙 總 編 輯 : 蕭 慶 智 董 大 鋼 許 莙 葇 王 雅 慧 主 編 : 賴 怡 潔 編 輯 群 : 周 慧 婷 陳 怡 君 陳 玫 禎 楊 雅 惠 郭 孟 平 伍 玉 琪 林 冠 良 林 淑 惠 賴 姿 潔 王 思 方 102 年 01 月

More information

Microsoft Word - Final Exam Review Packet.docx

Microsoft Word - Final Exam Review Packet.docx Do you know these words?... 3.1 3.5 Can you do the following?... Ask for and say the date. Use the adverbial of time correctly. Use Use to ask a tag question. Form a yes/no question with the verb / not

More information

Microsoft Word - ChineseSATII .doc

Microsoft Word - ChineseSATII .doc 中 文 SAT II 冯 瑶 一 什 么 是 SAT II 中 文 (SAT Subject Test in Chinese with Listening)? SAT Subject Test 是 美 国 大 学 理 事 会 (College Board) 为 美 国 高 中 生 举 办 的 全 国 性 专 科 标 准 测 试 考 生 的 成 绩 是 美 国 大 学 录 取 新 生 的 重 要 依

More information

VHDL(Statements) (Sequential Statement) (Concurrent Statement) VHDL (Architecture)VHDL (PROCESS)(Sub-program) 2

VHDL(Statements) (Sequential Statement) (Concurrent Statement) VHDL (Architecture)VHDL (PROCESS)(Sub-program) 2 VHDL (Statements) VHDL(Statements) (Sequential Statement) (Concurrent Statement) VHDL (Architecture)VHDL (PROCESS)(Sub-program) 2 (Assignment Statement) (Signal Assignment Statement) (Variable Assignment

More information

蔡 氏 族 譜 序 2

蔡 氏 族 譜 序 2 1 蔡 氏 族 譜 Highlights with characters are Uncle Mike s corrections. Missing or corrected characters are found on pages 9, 19, 28, 34, 44. 蔡 氏 族 譜 序 2 3 福 建 仙 遊 赤 湖 蔡 氏 宗 譜 序 蔡 氏 之 先 出 自 姬 姓 周 文 王 第 五 子

More information

Microsoft Word - 实验34.doc

Microsoft Word - 实验34.doc 实 验 三 : 软 件 产 品 概 念 的 表 达 - 全 自 动 洗 衣 机 的 分 析 ( 请 将 实 验 结 果 发 给 你 的 TA 如 果 你 对 产 品 创 意 有 信 心, 请 同 时 发 一 份 给 指 导 老 师 ) 课 程 : 软 件 工 程 专 业 导 论 学 号 : 姓 名 : 实 验 目 的 : 1: 通 过 网 络, 研 究 全 自 动 洗 衣 机 产 品 2: 掌 握

More information

Windows XP

Windows XP Windows XP What is Windows XP Windows is an Operating System An Operating System is the program that controls the hardware of your computer, and gives you an interface that allows you and other programs

More information

Open topic Bellman-Ford算法与负环

Open topic   Bellman-Ford算法与负环 Open topic Bellman-Ford 2018 11 5 171860508@smail.nju.edu.cn 1/15 Contents 1. G s BF 2. BF 3. BF 2/15 BF G Bellman-Ford false 3/15 BF G Bellman-Ford false G c = v 0, v 1,..., v k (v 0 = v k ) k w(v i 1,

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

Microsoft PowerPoint - 99052501李忠敬-替代役之展望

Microsoft PowerPoint - 99052501李忠敬-替代役之展望 1 課 目 綱 要 壹 前 言 -- 管 理 幹 部 的 定 位 貳 管 理 幹 部 應 有 的 認 知 與 能 力 參 管 理 幹 部 的 工 作 執 行 要 領 肆 役 男 輔 導 管 理 常 見 問 題 與 個 案 討 論 伍 結 語 2 管理幹部 的定義 管理幹部 係指教 育服務役役男 經甄 選 薦報 並接受領 導 管理實務教育訓 練 習得相關知能 於測驗合格後 由教 育部核定之擔任一般 役男領導及考核管理

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

实施生成树

实施生成树 学习沉淀成长分享 Spanning-tree 红茶三杯 ( 朱 SIR) 微博 :http://t.sina.com/vinsoney Latest update: 2012-06-01 STP 的概念 冗余拓扑 Server/host X Router Y Segment 1 Switch A Switch B Segment 2 冗余拓扑能够解决单点故障问题 ; 冗余拓扑造成广播风暴, 多帧复用,

More information

莊 子

莊 子 作 家 追 踪 莊 子 鄧 城 鋒 博 士 2012 年 5 月 5 日 1 1. 莊 子 與 莊 子 2. 逍 遙 遊 要 義 3. 齊 物 養 生 要 義 4. 莊 子 與 文 學 2 莊 子 ( 前 369?- 前 286?) 莊 子 之 家 世 及 社 會 地 位 有 書 可 讀, 不 耕 不 役 其 學 無 所 不 窺, 不 求 實 用 沒 落 貴 族 消 極 厭 世, 不 求 上 進 莊

More information

Pneumonia - Traditional Chinese

Pneumonia - Traditional Chinese Pneumonia When you have pneumonia, the air sacs in the lungs fill with infection or mucus. Pneumonia is caused by a bacteria, virus or chemical. It is not often passed from one person to another. Signs

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

Microsoft Word - CP details 2.doc

Microsoft Word - CP details 2.doc 給 諾 大 諾 20/6/201 /2012 腦 性 麻 痺 家 長 的 信 筆 者 話 : 時 堂 如 間 玩 果 你, 我 諾 是 唔 諾 係 大 一 用 腦 定 了 個 性 說 自 麻 大 得 己 痺 腦 對 的 性 家, 生 麻 長 命 自 痺 的 來 己 話 家 報 長, judge, 你 答, 一 了 永 定 我 遠 只 認 倆 都 可 為 係 作, 這, 免 為 封 唯 得 一 信 一

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

摘 要 互 联 网 的 勃 兴 为 草 根 阶 层 书 写 自 我 和 他 人 提 供 了 契 机, 通 过 网 络 自 由 开 放 的 平 台, 网 络 红 人 风 靡 于 虚 拟 世 界 近 年 来, 或 无 心 插 柳, 或 有 意 噱 头, 或 自 我 表 达, 或 幕 后 操 纵, 网 络

摘 要 互 联 网 的 勃 兴 为 草 根 阶 层 书 写 自 我 和 他 人 提 供 了 契 机, 通 过 网 络 自 由 开 放 的 平 台, 网 络 红 人 风 靡 于 虚 拟 世 界 近 年 来, 或 无 心 插 柳, 或 有 意 噱 头, 或 自 我 表 达, 或 幕 后 操 纵, 网 络 上 海 外 国 语 大 学 硕 士 学 位 论 文 论 文 题 目 从 偶 像 符 号 的 消 解 到 消 费 符 号 的 建 构 网 络 红 人 的 形 象 变 迁 研 究 学 科 专 业 传 播 学 届 别 2013 届 姓 名 孙 清 导 师 王 玲 宁 I 摘 要 互 联 网 的 勃 兴 为 草 根 阶 层 书 写 自 我 和 他 人 提 供 了 契 机, 通 过 网 络 自 由 开 放 的

More information

课程12-7.FIT)

课程12-7.FIT) 这 是 一 件 真 实 而 又 引 人 深 思 的 小 事 不 久 前, 一 位 法 国 教 育 心 理 学 专 家, 给 法 国 的 小 学 生 和 上 海 的 小 学 生 先 后 出 了 下 面 这 道 完 全 一 样 的 测 试 题 : 一 艘 船 上 有 86 头 牛,34 只 羊, 问 : 这 艘 船 的 船 长 年 纪 有 多 大? 法 国 小 学 生 的 回 答 情 况 是, 超 过

More information

124 第十三期 Conflicts in the Takeover of the Land in Taiwan after the Sino-Japanese War A Case in the Change of the Japanese Names of the Taiwanese Peopl

124 第十三期 Conflicts in the Takeover of the Land in Taiwan after the Sino-Japanese War A Case in the Change of the Japanese Names of the Taiwanese Peopl 123 戰後初期臺灣土地接收的糾紛 以更改日式姓名的臺人遭遇為例 124 第十三期 Conflicts in the Takeover of the Land in Taiwan after the Sino-Japanese War A Case in the Change of the Japanese Names of the Taiwanese People Abstract By Ho Fung-jiao

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

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40 C C trio@seu.edu.cn C C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40 Week3 C Week5 Week5 Memory & Pointer

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 Linux 操 作 系 统 基 础 介 绍 课 程 目 标 及 要 求 了 解 Linux 操 作 系 统 的 登 入 方 式 掌 握 常 用 命 令 的 基 本 用 法 能 够 熟 练 在 各 个 目 录 转 换 Outline 1. Linux 操 作 系 统 简 介 2. Linux 操 作 系 统 的 登 录 3. Linux 操 作 系 统 的 目 录 结 构 4. 常 用 命 令 5.

More information

新北考區105年國中教育會考簡章

新北考區105年國中教育會考簡章 新 北 考 區 105 年 國 中 教 育 會 考 簡 章 簡 章 核 定 文 號 : 新 北 市 政 府 教 育 局 104 年 12 月 22 日 新 北 教 中 字 第 1042404516 號 函 中 華 民 國 105 年 1 月 15 日 新 北 考 區 105 年 國 中 教 育 會 考 試 務 會 編 印 主 辦 學 校 : 新 北 市 立 新 莊 高 級 中 學 地 址 :24217

More information

105 年 國 中 教 育 會 考 重 要 日 期 項 目 日 期 及 時 間 報 名 1. 集 體 報 名 :105 年 3 月 10 日 ( 星 期 四 ) 至 3 月 12 日 ( 星 期 六 ) 每 日 8:00~12:00 13:30~17:00 2. 個 別 報 名 : 於 上 網 填

105 年 國 中 教 育 會 考 重 要 日 期 項 目 日 期 及 時 間 報 名 1. 集 體 報 名 :105 年 3 月 10 日 ( 星 期 四 ) 至 3 月 12 日 ( 星 期 六 ) 每 日 8:00~12:00 13:30~17:00 2. 個 別 報 名 : 於 上 網 填 屏 東 考 區 105 年 國 中 教 育 會 考 簡 章 核 定 文 號 : 屏 東 縣 政 府 104 年 12 月 30 日 屏 府 教 學 字 第 10480599200 號 函 中 華 民 國 105 年 1 月 15 日 屏 東 考 區 105 年 國 中 教 育 會 考 試 務 會 編 印 主 辦 學 校 : 國 立 屏 北 高 級 中 學 地 址 : 屏 東 縣 鹽 埔 鄉 彭 厝

More information

2-7.FIT)

2-7.FIT) 文 化 园 地 8 2009 年 8 月 18 日 星 期 二 E-mail:liuliyuan@qunlitimes.com 群 立 文 化 感 受 今 天 你 开 心 了 吗? 周 传 喜 群 雄 争 立 竞 争 意 识 ; 傲 立 群 雄 奋 斗 目 标, 这 几 句 话 一 直 是 群 立 的 文 化 和 方 针, 也 同 样 是 我 很 喜 欢 的 座 右 铭 我 想 这 几 句 话 生

More information

高雄市左營國民小學八十九學年度第一學期一年級總體課程教學進度表

高雄市左營國民小學八十九學年度第一學期一年級總體課程教學進度表 高 雄 市 前 鎮 區 紅 毛 港 國 民 小 學 102 學 年 度 第 1 學 期 ( 五 ) 年 級 各 領 域 教 學 進 度 總 表 教 學 者 :( 五 ) 年 級 教 學 團 隊 彈 性 學 習 時 數 -5 節 班 級 活 動 週 別 日 期 一 0830-0901 二 0902-0908 三 0909-0915 四 0916-0922 五 0923-0929 學 校 活 動 學 年

More information

國立桃園高中96學年度新生始業輔導新生手冊目錄

國立桃園高中96學年度新生始業輔導新生手冊目錄 澎 湖 考 區 105 年 國 中 教 育 會 考 簡 章 核 定 文 號 : 澎 湖 縣 政 府 104 年 12 月 15 日 府 教 學 字 第 1040072602 號 函 中 華 民 國 105 年 1 月 15 日 澎 湖 考 區 105 年 國 中 教 育 會 考 試 務 會 編 印 主 辦 學 校 : 國 立 馬 公 高 級 中 學 地 址 : 澎 湖 縣 馬 公 市 中 華 路 369

More information