中文模板

Size: px
Start display at page:

Download "中文模板"

Transcription

1 操作系统课程作业 源码阅读报告 1 源码阅读报告 1. Linux 内核中进程管理模块的整体结构 Linux 内核的进程管理模块包括进程的数据结构表示 进程的创建与终止 进程调度 进程间通信 CPU 调度 进程同步 死锁处理等 整个进程管理模块以结构体 task_struct 为核心, 其他的操作都针对这个结构体及其各个成员进行操作 比如, 创建一个进程就是新建一个 task_struct 结构体, 并将父子进程的结构体通过成员及指针连接起来 终止一个进程实际是更改一个进程的状态并将其删除 进程间通信是由结构体中 pipe 成员实现的 进程调度需要使用与进程调度策略有关的成员 policy 和 sched_class 来决定使用何种方式进行调度 在调度时, 还要更改进程状态, 将进程从就绪队列中移入移出 本篇阅读报告将分析进程在 Linux 内核中的数据结构表示, 随后依次讨论进程的创建 终止 调度等操作在 Linux 内核中的具体实现 2. Linux 内核中进程的数据结构表示进程和线程在 Linux 内核中被视为任务 (task) 统一管理 其数据结构 task_struct 定义于 \include\linux\sched.h 内 由于这个结构体的定义大概有 500 行长, 针对不同的情况提供了不同的编译器指令以满足所有的要求, 故在此仅列举一些重要的成员 (1) state (volatile long state) 和 exit_state(int exit_state) 它提供了进程当前所处的状态 一些状态值如下 包括了正在运行 已经终止 处于中断状态 处于僵尸进程状态等 #define TASK_RUNNING 0 // 正在运行, 或就绪 #define TASK_INTERRUPTIBLE 1 // 阻塞状态, 等待唤醒 #define TASK_UNINTERRUPTIBLE 2 // 类似于阻塞状态, 但只有资源可用才 // 会被唤醒 #define TASK_STOPPED 4 // 进程被停止执行 #define TASK_TRACED 8 // 进程被其他进程跟踪 // 下面三个状态既可以出现在 state 里, 也可以出现在 exit_state 里 #define EXIT_DEAD 16 // 进程终止的最终状态 - #define EXIT_ZOMBIE 32 // 僵尸进程状态 #define EXIT_TRACE (EXIT_ZOMBIE EXIT_DEAD) #define TASK_DEAD 64 // 以下是 Linux 实现的另一种睡眠状态的状态值 #define TASK_WAKEKILL 128 #define TASK_WAKING 256 #define TASK_PARKED 512 #define TASK_NOLOAD 1024 #define TASK_STATE_MAX 2048 (2) tgid) pid (pid_t pid) 和 tgid (pid_t

2 操作系统课程作业 源码阅读报告 2 这两个成员的区别如下 :pid 是用于区分每一个进程和线程的任务编号 然而, 某一个父进程下的所有线程应该具有相同的编号 所以 tgid 里面存放的就是这个线程组里第一个线程的编号 同时, 可以发现 getpid() 系统调用返回的是 tgid 而不是 pid 的值 这个系统调用的操作涉及多层函数 ( 五层以上 ) 嵌套, 十分复杂, 故在此不讨论 这两个成员的数据类型 pid_t 定义在 \include\linux\ types.h 中 其定义为 : kernel_pid_t pid_t; 而 kernel_pid_t 的定义在 \include\uapi\asm-generic\posix_types.h 中 其定义为 : typedef int kernel_pid_t; 也就是说,pid 的数据类型是 int (3) stack (void *stack) 它指向内核为该进程分配的栈 (4) flags (unsigned int flags) 它表示进程的状态值, 但不是运行状态 操作系统内核可以通过查看这个成员来了解当前进程的更加具体的信息 (5) 一些表示进程间亲属关系的成员 : (a) real_parent (struct task_struct rcu *real_parent) 它是创建该进程的进程,parent (struct task_struct rcu * parent) 是该进程的父进程 一般来说 real_parent 与 parent 相同, 但是如果父进程意外终止, 子进程被接管, 那么这两个变量将不同 real_parent 将指向 PID 为 1 的进程 (b) children (struct list_head children) 它是该进程的子进程列表 (c) sibling (struct list_head sibling) 它是该进程的兄弟进程列表 ( 即这些进程拥有相同的父进程 ) (6) ptrace (int ptrace) 和 ptraced (struct list_head ptraced) ptrace 是 Linux 提供的一个接口, 父进程可以通过这个接口来控制子进程的运行, 一般用于实现断点调试 前者是该进程是否被跟踪的标志位 如果为 0, 表示不需要被跟踪 后者是该进程可以跟踪并控制的进程列表 (7) 一些与优先级有关的成员 : (a) 成员 prio, static_prio, 和 normal_prio (int prio, static_prio, normal_prio;) 这三个成员分别表示动态优先级 静态优先级 和在当前调度策略之下的优先级 (b) int rt_priority (unsigned int rt_priority) 这个成员中存储的是实时优先级 (8) 一些与进程调度有关的成员 : (a) policy (unsigned int policy) 表示当前进程使用哪一种调度策略来运行 取值有以下几种 : #define SCHED_NORMAL 0 //CFS #define SCHED_FIFO 1 // 先到先服务调度方式 #define SCHED_RR 2 //ROUND-ROBIN, 时间片 + 优先级调度 #define SCHED_BATCH 3 // 带有动态优先级的 CFS 调度 /* SCHED_ISO: reserved but not implemented yet */ #define SCHED_IDLE 5 // 优先级最低, 只利用空闲资源

3 操作系统课程作业 源码阅读报告 3 #define SCHED_DEADLINE 6 // 采用 EDF 调度方法的实时调度 我们可以发现,Linux 系统支持多种调度策略, 包括普通调度 ( 利用 CFS) 实时调度 (FIFO) 轮转法调度(RR) 实时调度(DEADLINE) 等 这几种调度策略将在后面介绍 (b) sched-class (const struct sched_class *sched_class) 是进程所处的调度类 在这个成员里, 我们可以规定这个进程是静态进程 优先级最高的可以打断所有进程的进程或者是实时进程 一般进程等 每一种调度策略都有一种调度器类与之对应 (c) spus_allowed (cpumask_t cpus_allowed) 规定了这个进程可以使用哪一个处理器来运行 (9) 一些表示时间的成员 : (a) 成员 utime 和 stime (cputime_t utime, stime) 分别是进程执行用户代码的时间和执行系统代码的时间 (b) 成员 start_time (struct timespec start_time) 是进程的创建时间 (10) mm 和 active_mm (struct mm_struct *mm, *active_mm) 它们分别指向进程所拥有的内存地址以及进程运行时的内存 一般这两个值相等 (11) comm (char comm[task_]comm_len]) 它是进程所对应的程序名 (12) files (struct files_struct *files) 它表示进程当前打开的文件 (13) 此外, 还有进程中断 管道 (struct pipe_inode_info *splice_pipe) 进程运行的当前目录 (struct fs_struct *fs) 各种信号等成员 3. Linux 内核中进程的创建 (fork) 的实现方式 Linux 4.3 内核提供了多种 fork 方式 :fork,vfork 和 clone 它们定义在\kernel\fork.c 下 我们观察这三个系统调用的实现源码 (clone 源码过长, 不在此粘贴 ): #ifdef ARCH_WANT_SYS_FORK SYSCALL_DEFINE0(fork) { #ifdef CONFIG_MMU return _do_fork(sigchld, 0, 0, NULL, NULL, 0); #else /* can not support in nommu mode */ return -EINVAL; #endif #endif #ifdef ARCH_WANT_SYS_VFORK SYSCALL_DEFINE0(vfork) { return _do_fork(clone_vfork CLONE_VM SIGCHLD,0,0,NULL,NULL,0); #endif

4 操作系统课程作业 源码阅读报告 4 可以发现, 它们都调用了 _do_fork 函数, 只是参数不同 我们先来看一下 _do_fork 函数的执行流程 nr; _do_fork 的原型 : long _do_fork(unsigned long clone_flags,unsigned long stack_start, unsigned long stack_size,int user *parent_tidptr, int user *child_tidptr,unsigned long tls) clone_flags: 内存复制的参数 该标志位有四个字节构成, 一些常见参数如下 : SIGCHILD: 决定子进程结束时发送给父进程的信号 CLONE_VFORK: 这次 _do_fork 操作是 vfork 操作 CLONE_VM: 父子进程共享内存 可以看出,vfork 具有的功能的功能有 : 子进程在结束后父进程会收到信号 ; 父子进程共享内存 另外的功能要考察 CLONE_VFORK 这个参数的含义 stack_start: 子进程用户态堆栈地址 如果没有特殊需求, 一般设为 0. stack_size: 子进程的栈大小 一般来说, 这个参数没有必要, 通常为 0 parent_tidptr: 父进程的 pid 地址 child_tidptr: 子进程的 pid 地址 tls: 线程局部存储的参数 线程可以通过这个来申请属于自己的内存空间, 而不进行共享 _do_fork 的执行过程如下 : (1) 先执行函数 copy_process 来复制一个进程 这个函数实现的操作有 : 初始化进程的各个参数 ( 比如运行时间等 ), 复制所有进程信息 ( 比如文件系统 内存等 ), 然后初始化子进程栈空间, 分配新的 PID p=copy_process(clone_flags,stack_start,stack_size,child_tidptr, NULL, trace, tls); (2) 检查复制操作是否出错 如果复制出错, 返回错误代码 如果不出错, 就使用 get_task_pid() 函数获得其 pid( 刚才讲过, 这里获得的其实是 tgid), 并把它作为返回值返回 if (!IS_ERR(p)) { struct completion vfork; struct pid *pid; trace_sched_process_fork(current, p);// 使用 ptrace 跟踪子进程 pid = get_task_pid(p, PIDTYPE_PID); // 得到子进程的 pid nr = pid_vnr(pid); //( 以下省略 ) else nr = PTR_ERR(p); return

5 操作系统课程作业 源码阅读报告 5 (3) 根据 clone_flags 参数选择是否共享内存等操作 如果是 vfork, 就初始化 vfork 操作的参数, 比如 vfork_done 等 (4) 接下来就是调用 wake_up_new_task() 函数了 这会使子进程加入调度器等待 CPU 调度 如果是 vfork 的话, 父进程要被加入等待队列中, 等待子进程完成 这一部分代码如下 : wake_up_new_task(p); // 将子进程加入调度器中 /* forking complete and child started to run, tell ptracer */ if (unlikely(trace)) ptrace_event_pid(trace, pid); // 用 ptrace 给父进程提供信号 if (clone_flags & CLONE_VFORK) { // 如果是 vfork, 父进程等待 if (!wait_for_vfork_done(p, &vfork)) ptrace_event_pid(ptrace_event_vfork_done, pid); // 如果等待结束, 利用 ptrace 向父进程发送 vfork 完毕的信号 由上述内容发现,vfork 与 fork 的区别在于 :vfork 创建的子进程与父进程共享内存, 而且先于父进程运行 而 clone 系统调用则更类似于直接调用 _do_fork 函数,_do_fork 函数中的参数由用户自行指定 最后我们来比较一下 Linux 系统与 NachOS 系统进程创建过程的区别 Linux 系统功能繁多, 在 fork 的时候需要向父进程按照执行流程发出追踪信号, 使调试顺利 ; 提供了多种接口, 可以自定义父子进程之间数据的共享方式 而 NachOS 则类似于一个最小系统, 只提供了最基本的操作 在 NachOS 的 fork 操作中用到的复制用户名称空间 复制寄存器值 等操作在 Linux 中也有, 只不过被统一打包在了 copy_process 函数之内 我们可以看一下 copy_process 中的一些过程 : *childregs = *current_pt_regs(); // 子进程复制得到当前寄存器信息 childregs->ax = 0; // 子进程的 fork 返回值设为 0 if (sp) childregs->sp = sp; p->thread.ip = (unsigned long) ret_from_fork; // 设置子进程的 PC 这与我们在 NachOS 中的实现何其相似! 4. Linux 内核中进程终止的实现方式在进程终止时, 操作系统内核里的 do_exit 函数会被执行, 使进程结束 SYSCALL_DEFINE1(exit, int, error_code) { do_exit((error_code&0xff)<<8); do_exit 的执行流程如下 : 先检查要结束的进程是否能被结束 if (unlikely(in_interrupt())) // 不能结束中断服务进程 panic("aiee, killing interrupt handler!"); if (unlikely(!tsk->pid)) // 不能结束 PID 为 0 的进程

6 操作系统课程作业 源码阅读报告 6 panic("attempted to kill the idle task!"); 如果要结束的是中断服务进程, 就会报错 如果要结束 PID 为 0 的进程 (IDLE), 也会报错 检查完这些情况之后就可以开始真正的终止过程了 操作系统会依次调用 exit_mm, exit_sem, exit_shm, exit_files, exit_fs, exit_task_namespaces, exit_task_work, exit_thread 函数来从内核里清除该进程的内存 打开文件列表等一切信息, 最后还会把该进程的状态置为 TASK_DEAD 并进行一次进程调度 /* causes final put_task_struct in finish_task_switch(). */ tsk->state = TASK_DEAD; // 设置进程状态为 DEAD tsk->flags = PF_NOFREEZE; /* tell freezer to ignore us */ schedule(); // 进行一次调度, 之后会介绍这个函数至此, 进程就从操作系统上彻底的消失了 5. Linux 内核中进程调度的实现方式 Linux 系统有两种方法来激活进程调度 : 进程直接请求调度和操作系统周期性地检查是否需要调度 具体时机有 : 直接调用 schedule() 时 从内核态返回用户态时 从中断返回用户态时 发生抢占时 这两种调度方式分别由主调度器和周期性调度器实现 在调度时, 系统会从就绪列表中依次选择可以运行的实时进程 普通进程 idle 进程来运行 6. Linux 主调度器的实现那么主调度器是如何实现的呢? 主调度器实际就是 schedule 函数, 它负责完成进程切换的操作 这个函数定义在 kernel/sched/core.c 中 asmlinkage visible void sched schedule(void){ struct task_struct *tsk = current; sched_submit_work(tsk); // 检查死锁 do { preempt_disable(); // 关闭内核抢占 schedule(); // 调度 sched_preempt_enable_no_resched(); // 开启抢占 while (need_resched()); // 如果进程需要重新进行调度 // 就再调度一次 preempt_disable 函数的作用是 : 关闭内核抢占 在 Linux 系统中, 在内核态下也可能发生进程的抢占 如果在调度的时候发生了内核抢占, 那么在调度到一半时可能会发生终止, 出现异常 因此, 调度之前一定要把内核抢占关闭 真正的调度工作是 schedule 函数完成的 static void sched schedule(void){ struct task_struct *prev, *next; unsigned long *switch_count; *rq; struct rq

7 操作系统课程作业 源码阅读报告 7 int cpu; // 获取该 CPU 上的就绪队列 rq, 并且将 prev 赋为正在运行的进程 cpu = smp_processor_id(); rq = cpu_rq(cpu); rcu_note_context_switch(); prev = rq->curr; // 省略一部分代码 // 使用互斥锁锁住就绪队列, 防止调度过程中就绪队列发生变化导致混乱 smp_mb before_spinlock(); raw_spin_lock_irq(&rq->lock); lockdep_pin_lock(&rq->lock); rq->clock_skip_update <<= 1; /* promote REQ to ACT */ switch_count = &prev->nivcsw; // 记录切换次数 if (prev->state &&!(preempt_count() & PREEMPT_ACTIVE)){ // 如果当前进程不能被切换, 就让它重新启动 if (unlikely(signal_pending_state(prev->state, prev))) prev->state = TASK_RUNNING; else {// 否则就将当前进程从运行队列中删除 deactivate_task(rq, prev, DEQUEUE_SLEEP); // 省略一部分代码 next = pick_next_task(rq, prev); // 从就绪队列里挑选下一个进程 clear_tsk_need_resched(prev);// 清除 prev 进程需要调度的标志位 clear_preempt_need_resched();// 清除抢占标志位 rq->clock_skip_update = 0; if (likely(prev!= next)) { rq->nr_switches++; rq->curr = next; ++*switch_count; // 如果下一个进程与当前进程不同, 就进行上下文切换, 否则不切换 rq = context_switch(rq, prev, next); /*unlocks the rq */ // 其余代码省略 可以看到, schedule 函数主要完成的工作是 : 判断当前进程是否需要切换, 然后从就绪队列中挑选进程, 完成上下文切换的操作 而挑选进程的操作是由 pick_next_task 函数实现的 : 这个函数遍历所有的调度器类, 选择优先级最高的进程开始执行 上下文切换是 context_switch 函数实现的 这个函数的作用是把当前进程挂起, 然后将内存和寄存器切换到下一个进程的状态 上下文切换的主要操作由函数 switch_mm 和宏 switch_to 完成 : switch_mm(oldmm, mm, next);// 切换内存 switch_to(prev, next, prev);// 切换堆栈与寄存器 至此,Linux 主调度器的大致框架介绍完毕 接下来介绍周期性调度器的实现

8 操作系统课程作业 源码阅读报告 8 7. Linux 周期性调度器的实现周期性调度器实际是 scheduler_tick 函数 它也定义在 kernel/sched/core.c 中 因为 Linux 系统中共有三个调度器类, 因此周期性调度器实际做的工作就是从当前进程对应的调度器类中选取下一个进程执行 其核心操作是进程切换 : curr->sched_class->task_tick(rq, curr, 0); task_tick 函数的具体实现取决于调度器类 因此接下来介绍各个调度器类, 并介绍其周期性切换进程的方式 8. Linux 系统实时调度类 (rt_sched_class) 的核心源码与实现方式首先介绍实时调度 在 Linux 系统中, 实时进程是具有很强的调度需要的进程, 它们的响应时间需要尽可能地短 这一类进程的优先级处于中等位置, 低于 EDF 而高于 CFS 因此, 采用 RR(Round-Robin) 和 FIFO 来进行调度 这个调度类定义在 kernel/sched/rt.c 下 其进程切换函数 task_tick_rt 如下 : static void task_tick_rt(struct rq *rq,struct task_struct *p,int queued){ struct sched_rt_entity *rt_se = &p->rt; if (p->policy!= SCHED_RR)// 检测是否是 FIFO 如果是, 无需调度 return; if (--p->rt.time_slice) // 检测是否到了切换的时间片, 否则不切换 return; p->rt.time_slice = sched_rr_timeslice;// 重置时间片 // 把当前进程插入就绪队列中, 并把就绪队列的队首提出来 for_each_sched_rt_entity(rt_se) if (rt_se->run_list.prev!= rt_se->run_list.next) { requeue_task_rt(rq, p, 0); resched_curr(rq); return; 由于 FIFO 是先到先服务, 因此在每一个时间片到达时并不需要进行进程调度 而 RR 则是在每一个时间片都要进行一次调度 这跟我们一般理解的 FIFO 与 RR 调的度方式相同 另外, 我们在 nachos 中也实现了一个 RR 调度 这个函数与实验中的 FindNexttoRun 函数十分相似 9. Linux 系统最早截止时间优先调度类 (dl_sched_class) 的核心源码与实现方式这个调度类是为了实现最早截止时间优先算法而特意增设的调度类 这种调度类下只有一种调度策略 :EDF Linux 较高版本中新增的调度策略 这种调度方法具有很高的实时性, 主要用于对时间要求很高的任务 这个调度类定义在 kernel/sched/deadline.c 下 static void task_tick_dl(struct rq *rq, struct task_struct *p, int queued) { update_curr_dl(rq); // 更新当前进程的截止时间

9 操作系统课程作业 源码阅读报告 9 /* Even when we have runtime, update_curr_dl() might have * resulted in us not being the leftmost task anymore. In that * case NEED_RESCHED will be set and schedule() will start a new hrtick for the next task. */ if (hrtick_enabled(rq) && queued && p->dl.runtime > 0 && is_leftmost(p, &rq->dl)) start_hrtick_dl(rq, p); // 从队列中挑选截止时间最近的进程切换 我们发现,EDF 算法其实就是从等待队列中挑选截止时间最近的进程进行调度 10. Linux 系统完全公平调度类 (fair_sched_class) 的核心源码与实现方式完全公平调度类实现了 Linux 最普遍的调度方式 : 完全公平调度 它有两种调度策略 : 普通的 CFS 调度策略 (SCHED_NORMAL) 和采用分时策略的 CFS 调度 (SCHED_BATCH) 两种调度策略的唯一不同点在于第二种调度策略不能抢占, 因此适用于成批处理的工作 它们使用的算法是 CFS 算法 这个调度器类定义在 kernel/sched/fair.c 中 static void task_tick_fair(struct rq *rq, struct task_struct *curr, int queued){ struct cfs_rq *cfs_rq; //cfs_rq 是就绪队列 struct sched_entity *se = &curr->se; for_each_sched_entity(se) { cfs_rq = cfs_rq_of(se); // 获取当前运行的进程所在的 CFS 就绪队列 entity_tick(cfs_rq, se, queued);// 完成周期性调度 if (static_branch_unlikely(&sched_numa_balancing)) task_tick_numa(rq, curr); 根据源码可以看到,Linux 系统实际上是调用 entity_tick 函数完成了调度 而这个函数主要是调用 check_preempt_tick 函数来进行切换进程的决策 这个函数源码如下 : check_preempt_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr) { unsigned long ideal_runtime, delta_exec; struct sched_entity *se; s64 delta; // 计算当前进程应该运行的时间 */ ideal_runtime = sched_slice(cfs_rq, curr); // 计算当前进程实际运行时间 delta_exec=curr->sum_exec_runtime-curr->prev_sum_exec _runtime; // 如果实际运行时间高于应该运行的时间, 就应该切换 if (delta_exec > ideal_runtime) { resched_curr(rq_of(cfs_rq));

10 操作系统课程作业 源码阅读报告 10 clear_buddies(cfs_rq, curr); return; // 其余代码略 可以看出,CFS 是基于运行时间进行进程切换的 操作系统统计该程序实际运行时间, 然后与通过 nice 值计算得到的应该运行的时间进行对比 如果某一进程运行时间超过了应该运行的时间, 就将其切换 11. Linux 系统空闲进程调度类 (idle_sched_class) 的实现方式最后我们简单介绍一下 IDLE 调度类 (idle_sched_class) 这个调度类只有一种调度策略 : idle 调度策略 这种调度类下的进程优先级最低, 只有在系统 CPU 空闲时才会运行 一般只有 idle 进程和一些数学计算程序 ( 比如计算梅森素数的程序 ) 才会属于这个调度类 这个调度类定义在 kernel/sched/idle_task.c 中 我们观察这个文件, 发现函数很少, 而且很多函数都是空的 我把这种现象解释为 : 这种进程其实根本不需要调度 既然这种进程的优先级是最低的, 那么这种进程运行的必要性其实也不高 既然这种进程运行与否都无所谓, 那么调度也没有必要了 这种进程唯一需要的 调度 过程就是当这个进程结束之后换下一个进程运行 至此, 进程调度模块也介绍完毕了 12. 总结此次报告总结了 Linux 进程管理的主要数据结构, 还分析了 Linux 系统中进程创建 终止 调度的源码, 大致掌握了各个操作的实现流程 通过本次 Linux 源码阅读, 本人对 Linux 操作系统的进程管理模块有了大概的认识, 观察到了很多功能的具体实现方法, 了解了一个巨大的开源项目的维护与发展过程

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 - LJM05.doc

Microsoft Word - LJM05.doc 第 5 章 进程调度与负载均衡 调度工作涉及选择哪个 ( 哪些 ) 任务在哪个 ( 哪些 ) 处理器上运行, 解决各个进程公平地享用 CPU 资源的问题 具体需要确定当前进程可以占用 CPU 核多久 哪个进程将是下一个要运行的进程 负载均衡主要解决的是各个 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

<4D F736F F D20B5DA35D5C22020B2D9D7F7CFB5CDB3BDF8B3CC>

<4D F736F F D20B5DA35D5C22020B2D9D7F7CFB5CDB3BDF8B3CC> 从实践中学嵌入式 LINUX 操作系统 作者 : 华清远见 第 5 章 操作系统进程 在计算机使用过程中, 我们经常谈及的概念是程序 作为最终用户, 我们关心系统中哪些程序在运行, 需要关闭哪个程序 但是从操作系统的范畴来说, 我们使用更多的是进程 进程和程序虽然有一定的联系, 但是绝不能混为一谈 在传统的操作系统中, 程序并不能独立运行, 作为资源分配和独立运行的基本单元都是进程 程序是一个普通文件,

More information

To remove this message please register. 学习资料 4. 进程从绻统踃用返回到用户态时 ; 5. 内核处理完中断后, 进程返回到用户态 ; 六 : 进程队列 :( 对队列都有初始化 添加 删除等功能 ) 1: 运行队列 :Linux 绻统为处于帱绪态的进程的队列

To remove this message please register. 学习资料 4. 进程从绻统踃用返回到用户态时 ; 5. 内核处理完中断后, 进程返回到用户态 ; 六 : 进程队列 :( 对队列都有初始化 添加 删除等功能 ) 1: 运行队列 :Linux 绻统为处于帱绪态的进程的队列 To remove this message please register. 学习资料 Linux 进程与踃度学习 ----------------------------------------------------------------------------------------------- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

提纲 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

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

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

新・解きながら学ぶC言語

新・解きながら学ぶC言語 330!... 67!=... 42 "... 215 " "... 6, 77, 222 #define... 114, 194 #include... 145 %... 21 %... 21 %%... 21 %f... 26 %ld... 162 %lf... 26 %lu... 162 %o... 180 %p... 248 %s... 223, 224 %u... 162 %x... 180

More information

Guava学习之CharSequenceReader

Guava学习之CharSequenceReader CharSequenceReader 类是以 CharSequence 的形式读取字符 CharSequenceReader 类继承自 Reader 类, 除了 remaining() hasremaining() 以及 checkopen() 函数之后, 其他的函数都是重写 Reader 类中的函数 CharSequenceReader 类声明没有用 public 关键字, 所以我们暂时还不能调用这个类

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

新版 明解C言語入門編

新版 明解C言語入門編 328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66

More information

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco Windows RTEMS 1 Danilliu MMI TCP/IP 80486 QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos ecos Email www.rtems.com RTEMS ecos RTEMS RTEMS Windows

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

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

Guava学习之Resources

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

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++入門編

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

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

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

华恒家庭网关方案

华恒家庭网关方案 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

Microsoft PowerPoint - os_4.ppt

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

More information

lec02.key

lec02.key 第 2 讲进程控制 张雷雷 zhangl@nju.edu.cn 南京 大学计算机科学与技术系 1 主要内容 用户 / 程序员眼中的进程 基本概念 ps 命令 进程创建, 等待, 终 止 ; 程序执 行行 Linux 内核眼中的进程 Linux 进程描述 Linux 内核通 用链表 Linux 进程 / 线程的实现机制 系统调 用!2 进程及线程基本定义 进程 (process) 处于执 行行期的程序及其所包含资源的总称

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

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

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

254-256 1931 300 1982 338 132 133 219 220 101 184 45 45 149 151 155 129 130 30 210 106 318 319 77 166 160161 128 130 1982 18 19 131 191 41 1943 11 13 47 222 16 29 1979 12 27 62 80 78 79 119

More information

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

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

More information

专题一.ppt

专题一.ppt Android 核心入门分析 Jack.fan Copyright 2007-2008 Farsight. All rights reserved. 主要内容 : } 1 android 系统启动流程分析 } 2 android 系统 JNI 和 Binder 使用简介 } 3 android 系统输入子系统模型分析 1.1 android 系统启动流程分析 : } 1). } init 进程启动控制台进程

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

《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

没有幻灯片标题

没有幻灯片标题 1 第六章处理机管理 2 6.1 处理机的二级调度 3 作业调度 ( 宏观 ): 决定那些程序调入计算机系统 进程调度 ( 微观 ): 决定那个 ( 些 ) 进程占用 CPU 6.2 作业调度作业状态及转移 4 作业的四种状态 : 1. 提交状态用户将程序和数据提交机计算中心 ; 2. 后备状态将作业录入到后援存储设备 ; 3. 执行状态作业调入计算机系统内存 ; 4. 完成状态作业计算完成的善后处理

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

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

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

FY.DOC

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

More information

How to cope: What do I tell the children? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

More information

正文.indd

正文.indd 第 3 章 进程管理 本章引入进程的概念 进程是 Unix 操作系统抽象概念中最基本的一种 其中涉及进程的定 义以及相关的概念 比如线程 然后讨论 Linux 内核如何管理每个进程 它们在内核中如何被列 举 如何创建 最终又如何消亡 我们拥有操作系统就是为了运行用户程序 因此 进程管理就 是所有操作系统的心脏所在 Linux 也不例外 3.1 进程 进程就是处于执行期的程序 目标码存放在某种存储介质上

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

ST template WORD

ST template WORD 一种计算 CPU 使用率的方法及其实现原理 1 前言 出于性能方面的考虑, 有的时候, 我们希望知道 CPU 的使用率为多少, 进而判断此 CPU 的负载情况和对于当前运行环境是 否足够 胜任 本文将介绍一种计算 CPU 占有率的方法以及其实现原理 2 移植算法 2.1 算法简介 此算法是基于操作系统的, 理论上不限于任何操作系统, 只要有任务调度就可以 本文将以 FreeRTOST 为例来介绍本算法的使用方法

More information

Microsoft PowerPoint - Chapter3_2_Scheduling.pptx

Microsoft PowerPoint - Chapter3_2_Scheduling.pptx 操作系统 2014 春 第三章进程机制与并发程序设计 - 处理机调度 授课人 : 孙海龙 2014 年 3 月 19 日 调度的类型与模型 常见的调度算法 实时系统调度 多处理机调度 内容提要 1 要解决的问题 WHAT: 按什么原则分配 CPU 进程调度算法 WHEN: 何时分配 CPU 进程调度的时机 HOW: 如何分配 CPU CPU 切换过程 ( 进程的上下文切换 ) 处理机调度 调度的类型与模型

More information

untitled

untitled 1 DBF (READDBF.C)... 1 2 (filetest.c)...2 3 (mousetes.c)...3 4 (painttes.c)...5 5 (dirtest.c)...9 6 (list.c)...9 1 dbf (readdbf.c) /* dbf */ #include int rf,k,reclen,addr,*p1; long brec,erec,i,j,recnum,*p2;

More information

泛型编程与C++标准库

泛型编程与C++标准库 28 第 2 章进程管理和调度 第 2 章 进程管理和调度 所 有的现代操作系统都能够同时运行若干进程, 至少用户错觉上是这样 如果系统只有一个处理器, 那么在给定时刻只有一个程序可以运行 在多处理器系统中, 可以真正并行运行的进程数目, 取决于物理 CPU 的数目 内核和处理器建立了多任务的错觉, 即可以并行做几种操作, 这是通过以很短的间隔在系统运行的应用程序之间不停切换而做到的 由于切换间隔如此之短,

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

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

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

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

操作系统实验指导手册 实验二 2 一 实验目的 1. 掌握进程管理与同步 : 实现 fork exec join 系统调用. 2. 掌握进程调度 : 实现优先级调度. 二 实验内容 运用理论课上学习的 fork exec waitpid / join 等系统调用的工作原理, 在 Nachos 上实现

操作系统实验指导手册 实验二 2 一 实验目的 1. 掌握进程管理与同步 : 实现 fork exec join 系统调用. 2. 掌握进程调度 : 实现优先级调度. 二 实验内容 运用理论课上学习的 fork exec waitpid / join 等系统调用的工作原理, 在 Nachos 上实现 操作系统实验指导手册 实验二 1 操作系统原理与设计 实验二 Nachos 进程管理与调度 必读 : 简单 Nachos shell 的实现 根据实验反馈, 考虑到同学们实际情况, 对实验二做以下调整 1 本次实验形式主要为代码填空 所有需要填空的部分助教都已经在代码中做了标记 你必须且只能把代码写在助教圈定的范围以内 且不能在任何地方添加任何头文件 不能使用 C 或 C++ 的库函数 ( 如 vfork,

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

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

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

考 試 日 期 :2016/04/24 教 室 名 稱 :602 電 腦 教 室 考 試 時 間 :09:50 25 26 27 28 29 30 31 32 33 34 35 36 二 技 企 管 一 胡 宗 兒 中 文 輸 入 四 技 企 四 甲 林 姿 瑄 中 文 輸 入 二 技 企 管 一

考 試 日 期 :2016/04/24 教 室 名 稱 :602 電 腦 教 室 考 試 時 間 :09:50 25 26 27 28 29 30 31 32 33 34 35 36 二 技 企 管 一 胡 宗 兒 中 文 輸 入 四 技 企 四 甲 林 姿 瑄 中 文 輸 入 二 技 企 管 一 考 試 日 期 :2016/04/24 教 室 名 稱 :602 電 腦 教 室 考 試 時 間 :09:50 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 五 專 企 二 乙 胡 哲 維 中 文 輸 入 五 專 企 二 乙 周 林 昜 中 文 輸 入 五 專 企 二 乙 賴 昱 樺 中 文 輸 入 五 專 企 二 乙

More information

DVK530/531扩展板

DVK530/531扩展板 DVK720 扩展板 驱动移植手册 2014.04.03 V1.0 版权声明 本手册所有权由深圳市微雪电子有限公司独家持有 未经本公司的书 面许可, 不得以任何方式或形式进行修改 分发或复制本文档的任何 部分, 否则一切后果由违者自负 版本更新记录 版本日期说明 V1.0 2014.04.03 初始发布 深圳市微雪电子有限公司 www.waveshare.net I 目录 版权声明... I 版本更新记录...

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

38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民 1 08414159 惠 鴻 眼 鏡 行 桃 園 市 中 壢 區 福 德 里 中 華 路 一 段 186 號 1 樓 30,000 獨 資 宋 耀 鴻 105/04/27 府 經 登 字 第 1059003866 號 2 17891110 承 元 冷 氣 空 調 工 程 行 桃 園 市 桃 園 區 中 德 里 國 際 路 1 段 98 巷 50 號 2 樓 之 4 200,000 獨 資 詹 安 平

More information

378高雄市都市計畫說明書

378高雄市都市計畫說明書 378 高 雄 市 都 市 計 畫 說 明 書 案 名 : 變 更 高 雄 市 楠 梓 區 高 楠 段 二 七 九 地 號 等 八 筆 農 業 區 土 地 為 批 發 市 場 用 地 擬 定 申 請 單 位 : 高 雄 市 政 府 計 畫 範 圍 : 如 圖 示 法 令 依 據 : 都 市 計 畫 法 第 二 十 七 條 第 一 項 第 四 款 一 背 景 說 明 : ( 一 ) 本 市 現 有 果

More information

4.process-part1.pptx

4.process-part1.pptx 操作系统 Operation System 四 进程管理 : 进程与线程 孙海龙 2017 年 3 月 28 日 内容提要 进程概念的引入 进程状态与控制 线程概念的引入 线程的实现方式 小结 2 1 从一个例子说起 在 X 年 X 月 X 日,X 人, 家中 : 电话铃响要接电话 有人敲门要去开门 孩子哭了要哄孩子 要下雨了收衣服 水龙头开着要关水 怎么办? 操作系统也是如此! 3 程序的顺序执行

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

基于Linux的USB设备

基于Linux的USB设备 AKA 1 http://www.akaembed.org/ 2003.9 1 cvs yangxiaoli mail alula418@163.com zhaoyingyi mail mrbit@21cn.com UcLinux RTL8019AS guogang mail guogang_bacon@sohu.com Linux GDB guochaosheng mail scguo@zhhz.suda.edu.cn

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

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

Microsoft Word - MAN2023A_CH_APPONE.doc

Microsoft Word - MAN2023A_CH_APPONE.doc AT91 softpack 1.5 代码解读 基于 SAM7X EK 综合应用代码解读 文档编号 文档版本 Rev. A 文档摘要 基于 AT91SAM7X EK 开发板的代码解读,GPIO H161T01 代码解读 关键词 AT91SAM7X256 系统板 创建日期 2010 07 14 创建人员 Cust126 审核人员 Robin 文档类型 公开发布 / 开发板配套文件 版权信息 Mcuzone

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

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

PowerPoint Presentation

PowerPoint Presentation 中 小 IT 企 业 人 力 资 源 管 理 咨 询 简 介 一 背 景 分 析 二 需 求 分 析 三 服 务 内 容 四 操 作 流 程 五 斯 隆 优 势 六 行 业 案 例 七 服 务 理 念 目 录 一 背 景 分 析 -IT 业 现 状 分 析 IT 产 业 的 总 量 水 平 较 低 中 国 IT IT 现 状 总 体 规 模 较 小 技 术 自 主 创 新 能 力 差 对 经 济 的

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

PIC_SERVER (11) SMTP ( ) ( ) PIC_SERVER (10) SMTP PIC_SERVER (event driven) PIC_SERVER SMTP 1. E-

PIC_SERVER (11) SMTP  ( ) ( ) PIC_SERVER (10) SMTP  PIC_SERVER (event driven)  PIC_SERVER SMTP  1.  E- (2005-02-01) (2005-04-28) PIC_SERVER (10) SMTP E-mail PIC_SERVER (event driven) E-mail PIC_SERVER SMTP E-mail 1. E-mail E-mail 1 (1) (2) (3) (4) 1 1. 2 E-mail A E-mail B E-mail SMTP(Simple Mail Transfer

More information

untitled

untitled 1 7 7.1 7.2 7.3 7.4 7.5 2 7.1 VFT virtual 7.1 3 1 1. 2. public protected public 3. VFT 4. this const volatile 4 2 5. ( ) ( ) 7.1 6. no-static virtual 7.2 7. inline 7.3 5 3 8. this this 9. ( ) ( ) delete

More information

并行计算

并行计算 OpenMP OpenMP OpenMP OpenMP OpenMP MPI OpenMP OpenMP 2006-10-9 2 OpenMP ( ) OpenMP RedHat Linux Intel C OpenMP 2006-10-9 3 OpenMP OpenMP OpenMP OpenMP 2006-10-9 4 RedHat Linux Intel C root intel8.1 chmod

More information

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF> 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 考 试 2009 年 上 半 年 软 件 设 计 师 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information

Microsoft Word - MAN2011A_CH_RTT.doc

Microsoft Word - MAN2011A_CH_RTT.doc 基于 SAM7X EK 和 IAR EWARM 文档编号 文档版本 Rev. A 文档摘要 基于 AT91SAM7X EK 开发板的代码解读,RTT 代码解读 关键词 AT91SAM7X256 SAM7X EK IAR EWARM J LINK RTT 创建日期 2010 06 08 创建人员 Cust126 审核人员 Robin 文档类型 公开发布 / 开发板配套文件 版权信息 Mcuzone 原创文档,

More information

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public

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

untitled

untitled 1 1.1 1.2 1.3 1.4 1.5 ++ 1.6 ++ 2 BNF 3 4 5 6 7 8 1.2 9 1.2 IF ELSE 10 1.2 11 1.2 12 1.3 Ada, Modula-2 Simula Smalltalk-80 C++, Objected Pascal(Delphi), Java, C#, VB.NET C++: C OOPL Java: C++ OOPL C# C++

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

4.process-part3.pptx

4.process-part3.pptx 操作系统 Operation System 四 进程管理 : 调度 孙海龙 2017 年 4 月 13 日 内容提要 基本概念 设计调度算法要考虑的问题 批处理系统的调度算法 交互式系统的调度算法 实时系统的调度算法 多处理机调度 2 2 1 CPU 调度 什么是 CPU 调度? CPU 调度的任务是控制 协调多个进程对 CPU 的竞争 也就是按照一定的策略 ( 调度算法 ), 从就绪队列中选择一个进程,

More information

Microsoft Word - 1-3陳詠琳-近代..

Microsoft Word - 1-3陳詠琳-近代.. 近 代 數 字 卦 研 究 考 述 陳 詠 琳 摘 要 所 謂 的 數 字 卦, 乃 指 出 土 文 物 上 某 種 奇 特 的 卜 筮 符 號, 有 學 者 表 示 這 些 符 號 為 數 字, 並 將 之 與 周 易 連 結, 遂 使 此 類 符 號 有 筮 數 易 卦 之 稱, 為 一 門 新 穎 的 易 學 研 究 議 題 張 政 烺 以 奇 數 為 陽, 偶 數 為 陰 的 原 則, 把

More information

Microsoft Word - MSP430 Launchpad 指导书.docx

Microsoft Word - MSP430 Launchpad 指导书.docx Contents 3... 9... 14 MSP430 LAUNCHPAD 指导书 3 第一部分第一个工程 New Project File > New > CCS Project Project name: ButtonLED Device>Family: MSP430 Variant: MSP430G2553 Project templates and examples : Empty Project

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明

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

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

Microsoft Word - freeRTOS移椊.docx

Microsoft Word - freeRTOS移椊.docx FREERTOS 在 STM32 的移植 V 1.0 FreeRTOS 作为开源的轻量级实时性操作系统, 不仅实现了基本的实时调度 信号量 队列和存储管理, 而且在商业应用上不需要授权费 FreeRTOS 的实现主要由 list.c queue.c croutine.c 和 tasks.c 4 个文件组成 list.c 是一个链表的实现, 主要供给内核调度器使用 ;queue.c 是一个队列的实现,

More information

ebook14-4

ebook14-4 4 TINY LL(1) First F o l l o w t o p - d o w n 3 3. 3 backtracking parser predictive parser recursive-descent parsing L L ( 1 ) LL(1) parsing L L ( 1 ) L L ( 1 ) 1 L 2 L 1 L L ( k ) k L L ( 1 ) F i r s

More information

以前使用的 Linux 监测工具 例如 : ps netstat vmstat iostat sar strace top oprofile 等等 缺点 : 以应用为中心的工具使用范围很窄 可在系统范围内使用的工具只能提供系统行为的静态视图, 无法对系统进行深入的探查 存在多种不同的工具和数据源,

以前使用的 Linux 监测工具 例如 : ps netstat vmstat iostat sar strace top oprofile 等等 缺点 : 以应用为中心的工具使用范围很窄 可在系统范围内使用的工具只能提供系统行为的静态视图, 无法对系统进行深入的探查 存在多种不同的工具和数据源, 带有 SystemTap 的动态 Linux 内核仪器工具 Eugene Teo, RHCE, RHCX Linux 企业应用移植 (LEAP) 工程师红帽亚太区 以前使用的 Linux 监测工具 例如 : ps netstat vmstat iostat sar strace top oprofile 等等 缺点 : 以应用为中心的工具使用范围很窄 可在系统范围内使用的工具只能提供系统行为的静态视图,

More information

untitled

untitled CHAPTER 02 2 CHAPTER 2-1 2-4 2-2 2-5 2-3 2-6 2-1 2-1-1 2-2 02 int A[3] = {10, 20, 30; A[0] 10 A[1] 20 A[2] 30 int *pa[3], A[3]; C 3 pa pa[0]pa[1]pa[2] 3 A A[0]A[1]A[2] 3 A A[0] A + i A[i] A + i &A[i]*(A

More information

Microsoft Word - 实用案例.doc

Microsoft Word - 实用案例.doc 计 算 机 系 统 应 用 2009 年 第 12 期 嵌 入 式 Linux 下 温 湿 度 传 感 器 的 设 计 与 实 现 1 Design and Implementation of Temperature and Humidity Sensor Based on Embedded Linux 陈 博 刘 锦 高 ( 华 东 师 范 大 学 电 子 科 学 技 术 系 上 海 200241)

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

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

ESP-Jumpstart

ESP-Jumpstart 2016-2019 2019 08 08 Contents 1 3 1.1 ESP32.............................. 3 1.2.................................................. 5 2 7 2.1............................................. 7 2.2 ESP-IDF............................................

More information

ebook 86-15

ebook 86-15 15 G t k + d e l e t e _ e v e n t G n o m e G n o m e 15.1 GnomeDialog G t k + G n o m e D i a l o g 15.1.1 G n o m e D i a l o g g n o m e _ d i a l o g _ n e w ( ) G N O M E _ D I A L O G ( d i a l

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

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

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

PowerPoint Presentation

PowerPoint Presentation L o g o Java 线程 中软培训中心 内容概述 了解什么是线程 定义线程 实例化线程 启动线程 同步代码 了解线程的 4 个状态之间的转换关系 专题 继承 Thread 和和实现 Runnable 的比较 线程之间的关系 本章目标 学完以后我们应该可以 : 了解什么是线程 编程定义线程 编程实例化线程 知道如何启动线程 会使用同步代码来保护资源 说出线程的 4 个状态之间的转换关系 程序 进程和线程

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

}; "P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ", " " string imagedata; if(0!= read_image("a.jpg",imagedata)) { return -1; } string rsp; ytopen_sdk m_sd

}; P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ,   string imagedata; if(0!= read_image(a.jpg,imagedata)) { return -1; } string rsp; ytopen_sdk m_sd tencentyun-youtu c++ sdk for 腾讯云智能优图服务 & 腾讯优图开放平台 安装 运行环境 Linux 依赖项 - curl-7.40.0, 获取更新版本 https://github.com/bagder/curl - openssl-1.0.1k, 获取更新版本 https://github.com/openssl/openssl 构建工程 工程采用 CMake 构建 1.

More information

如何提升學生的創造力? (陳惠芳)

如何提升學生的創造力?  (陳惠芳) 如 何 提 升 學 生 的 創 造 力? ( 陳 惠 芳 ) 星 島 日 報 2012-10-02 F03 師 家 版 卓 師 桌 思 藝 術 教 育 是 現 代 教 育 概 念 中 重 要 的 一 環 在 五 育 德 智 體 群 美 中, 藝 術 教 育 比 較 接 近 美 育, 但 亦 有 涉 及 其 他 四 項 藝 術 教 育 一 方 面 培 養 學 生 的 創 意 想 像 力 及 表 達 能

More information

Microsoft Word - 11.doc

Microsoft Word - 11.doc 除 錯 技 巧 您 將 於 本 章 學 到 以 下 各 項 : 如 何 在 Visual C++ 2010 的 除 錯 工 具 控 制 下 執 行 程 式? 如 何 逐 步 地 執 行 程 式 的 敘 述? 如 何 監 看 或 改 變 程 式 中 的 變 數 值? 如 何 監 看 程 式 中 計 算 式 的 值? 何 謂 Call Stack? 何 謂 診 斷 器 (assertion)? 如 何

More information