<4D F736F F D20B5DAC1F9D5C22ECFB5CDB3B5F7B6C8A3AC495043BACDD2B3C3E6CAA7D0A7BFD8D6C62E646F63>

Size: px
Start display at page:

Download "<4D F736F F D20B5DAC1F9D5C22ECFB5CDB3B5F7B6C8A3AC495043BACDD2B3C3E6CAA7D0A7BFD8D6C62E646F63>"

Transcription

1 第六章. 系统调度,IPC 和页面失效控制 (lab4)(v0.1) 6.1. 实验目标 MIT 这次实验是在 Lab3 进程和中断管理的基础上实现, 目标是在他们的 JOS 操作系统中实现多进程管理和进程间消息通信的功能 在实验三中, 我们知道进程是一个执行中的程序实例 利用分时技术, 操作系统上同时可以运行多个进程 分时技术的基本原理是把 CPU 的运行时间划分成一个个规定长度的时间片 ( 实验中一个时间片为 100ms), 让每个进程在一个时间片内运行 当进程的时间片用完时系统舅利用调度程序切换到另一个进程去运行 当一个进程在执行时,CPU 的所有寄存器中的值 进程的状态以及堆栈中的内容被称为该进程的上下文 当内核需要切换至另一个进程时, 它需要保存当前进程的所有状态, 即保存当前进程的上下文, 以便在再次执行该进程时, 能够恢复到切换时的状态执行下去 在操作系统的进程调度方式中有抢占式和非抢占式, 本实验中采用抢占式进程调度, 即现行进程在运行过程中, 如果有重要或紧迫的进程到达 ( 其状态必须为就绪 ), 则现运行进程将被迫放弃处理机, 系统较处理机立刻分配给新到达的进程, 其需要时钟中断处理程序实现 其中如何产生多个进程以及如何进行进程切换是本实验的目标 程序的代码比较零散, 主要集中在 kern 和 lib 目录下 该实验可以分为 3 部分 : 实现调度算法 创建新的进程环境和进程间通信 第一部分通过循环轮转 (Round-Robin) 调度算法实现多用户进程 ; 第二部分通过实现类似于 Unix 进程创建的 fork() 函数创建新的进程以及实现用户态下的缺页错误处理函数 ; 最后通过时钟中断实现用户进程间的消息通信等 本实验中的函数在 kern 下主要是完成以下文件 : kern/sched.c kern/syscall.c kern/trapentry.s kern/trap.c kern/env.c 在 lib 目录下需要完成的文件包括 : lib/pfentry.s lib/pgfault.c lib/fork.c lib/ipc.c 在本次实验过程中没有检查函数, 不过 JOS 给出了一些用户进程, 在实验中运行这些进程和文档说明中的结果对照, 如果出现问题可以利用 bochs 设置断点查看相关的错误, 也可以用 cprintf 打印相关信息, 来查看是否运行正确 只有每次运行正确之后才能继续下面

2 的实验, 确保错误只出现在当前代码中 6.2. 背景知识 通过实验二和实验三,JOS 系统在完成了内存分页管理以及进程结构初始化和中断初始化之后, 已经可以简单的运行一个进程, 并可以使用中断系统进行系统调用了 在主要函数 i386_init() 中, 对进程结构初始化和中断初始化之后, 又增加了支持多进程环境的两个函数 pic_init(); 和 kclock_init();, 前者是初始化 8259A 的中断控制器, 为后面的时钟中断做准备, 后者是初始化 8253 可编程定时器, 用来产生时钟中断 ( 系统定义每秒 100 次, 即 8253 被设置成每隔 10ms 就发出一个时钟中断信号 ) 在 JOS 系统内核启动之后, 系统创建了一个用户 idle 进程, 即传统意义上的守护进程 ( 一个周期性运行或总是等待某个事件的后台进程 ), 是系统中的后台服务进程, 它是一个生存期较长的进程, 通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件 守护进程常常在系统引导装入时启动, 在系统关闭时终止 Linux 系统有很多守护进程, 大多数服务都是通过守护进程实现的 在 JOS 系统中,idle 进程周期性的调用调度函数, 调度执行就绪的进程 在系统启动了用户进程之后, 内核函数 i386_init(); 调用调度函数 sched_yield(); 开始执行第一个用户进程并周期性的执行就绪的用户进程 我们知道, 现代操作系统都是多用户多进程环境, 因此, 当前 JOS 只运行一个进程是远远不够的 在本实验中, 我们让 JOS 支持多进程 ( 像现代操作系统那样 ), 通过创建新的进程以及实现简单的多进程调度算法来实现 6.3. 多进程管理的实现 在这个实验中, 主要是实现调度算法以及创建新的进程, 并实现用户态下的 frok 函数以及用户态的页错误处理函数, 对于前一部分, 主要是在 NENV(1024) 个进程中循环轮转实现多进程管理以及实现系统调用中的进程创建 ; 而后一部分主要是讨论如何实现用户态进程创建新的进程 多进程管理 在 JOS 系统中, 主要通过实现一些新的系统调用函数来允许用户进程创建新的进程, 并实现简单的 Round-Robin 调度算法允许内核当进程自愿放弃 CPU 或者退出时切换到另一个进程, 在后面我们还会实现时钟中断控制下的可剥夺调度 下面我们分别对调度算法和新的系统调用进行讨论 调度算法在 JOS 中,Round-Robin 调度算法把全局变量 envs( 见实验 3 报告中 3.1.2) 当作循环数组进行搜索, 跳过 idle 进程, 只有当没有进程可运行时, 运行 idle 进程 ; 调度的时机即当进程自愿放弃 CPU 或者由于某件事件阻塞时也即系统进行系统切换, 后一种涉及到了抢占式调度, 比如当前进程在 I/O 时并没有用到处理器, 此时内核需要强制暂停当前进程, 执行另一个就绪进程

3 在 JOS 系统中, 我们主要通过一个函数实现进程调度, 即 kern/sched.c 中的 sched_yield() 函数, 下面对此函数进行说明 void sched_yield(void) 首先, 实验 4 开始的第一个进程 envs[0] 就是特殊的 idle 进程 在本函数中, 通过搜索 envs 数组寻找一个新的进程去执行, 从前一个执行的进程开始, 直到找到一个就绪的进程 ; 当没有就绪进程时, 才重新调度 idle 进程 在完成 sched_yield() 之后一定要将此函数加入到系统调用中, 允许用户进程调用调度函数 创建进程相关的系统调用实验 3 中, 我们只创建了一个进程运行, 并没有允许用户进程产生新的子进程, 我们需要在 JOS 系统允许用户进程通过系统调用创建新的用户进程 传统上的 Unix 提供 fork() 系统调用创建进程, 创建出来的子进程复制了父进程的整个地址空间, 除了进程号不同, 在父进程中 fork() 返回子进程的进程号, 在子进程中返回 0, 以此来区分父子进程 我们所要讨论的进程创建与 Unix 的类似 由于进程创建往往涉及到内核操作, 如果用户态允许创建进程的话, 往往涉及到一些特权指令, 比如进程的状态设置和内存分配 ; 还有就是容易产生恶意代码对系统进行破坏 ;, 因此在创建进程时, 我们需要用户进程陷入到内核态执行 以下即是我们需要实现 kern/syscall.c 中的函数 : static envid_t sys_exofork(void) static int sys_env_set_status(envid_t envid, int status) static int sys_page_alloc(envid_t envid, void *va, int perm) static int sys_page_map(envid_t srcenvid, void *srcva,envid_t dstenvid, void *dstva, int perm) static int sys_page_unmap(envid_t envid, void *va) 这里, 我们首先对 JOS 系统中要使用的函数进行说明 int envid2env(envid_t, struct Env **, bool) // 将一个 envid 转换成指向 env 的一个指针, 在 fork() 中调用本函数一定要把 bool 设为 1, 以此来说明设置的进程要么是父进程, 要么是当前进程的子进程 下面对这些函数进行说明 static envid_t sys_exofork(void) 这是 JOS 实现进程创建中的最重要的一个函数, 创建一个新的进程, 其寄存器状态和当前父进程寄存器状态一样, 并标记为 ENV_NOT_RUNNABLE, 在父进程中,sys_exofork 返回创建子进程的 envid_t, 而在子进程中返回 0. 注意 : 当进程调用 sys_exofork 创建子进程时所有的寄存器的值都被复制到了子进程里, 包括 eip 的值, 这样当子进程继续执行的时候如果它的内容与父进程完全相同, 它将从父进程执行系统调用的下一条指令处开始执行, 而此处的汇编指令应该是将 eax 的值复制给一个变量留待后续作为返回值返回, 这样如果在系统调用 sys_exofork 中将新创建的子进程的 eax 寄存器置为 0 就将使得子进程继续执行时认为其系统调用的返回值为 0 static int sys_env_set_status(envid_t envid, int status) 一旦进程的地址空间和寄存器状态都初始化之后, 用来标示一个新的进程的执行状态信

4 息 设置 envid_t 进程状态为 status(env_runnable 或者 ENV_NOT_RUNNABLE) static int sys_page_alloc(envid_t envid, void *va, int perm) 分配一页物理内存, 并将它以 perm 属性映射到 envid 进程 va 所对应的地址空间中 注意 : 在分配物理内存时, 需要将页内容初始化为 0, 以防止脏数据产生异常 ( 系统有时在释放内存时并没有清除内存信息, 一些内存中还保留有以前的信息, 对内存清零增强了系统的正确性 ), 对后面实验造成影响 static int sys_page_map(envid_t srcenvid, void *srcva,envid_t dstenvid, void *dstva, int perm) 将 srcenvid 进程地址空间中的线性地址 srcva 的页映射到 dstenvid 进程地址空间中的 dstva 地址处, 并设置页属性为 perm 此处的操作并非数据拷贝而是页表操作, 即两进程共享同一个页的地址 如果使用数据拷贝, 当一个进程有大量的数据时, 而子进程只是用到了一小部分的话就会浪费内存空间, 而且降低了系统的效率 使用页表操作则不仅提高了效率还增强了系统的灵活性 static int sys_page_unmap(envid_t envid, void *va) 取消进程 envid 地址空间中线性地址 va 所对应页的映射, 即删除线性地址 va 所对应的物理页面 用户态 fork 和 page fault 在本节中, 主要讨论 JOS 系统中用户态进程创建子进程 在此, 我们需要了解 fork() 函数中用到的 COW 技术 在 fork() 系统调用中需要复制父进程的地址空间到子进程中, 所谓复制, 只是进程的基本资源的复制, 如 task_struct 数据结构 系统空间堆栈 页面表等等 传统的 fork() 系统调用直接把所有的资源复制给新创建的进程 这种实现效率比较低下, 因为它拷贝的数据也许并不共享, 而且, 如果新进程打算执行一个新的映像, 那么所有的拷贝都将前功尽弃 JOS 系统中 fork() 使用写时拷贝 (copy-on-write) 页实现 写时拷贝是一种可以推迟甚至免除拷贝数据的技术, 即内核此时并不复制整个进程地址空间, 而是让父进程和子进程共享同一个拷贝 只有在需要写入的时候, 数据才会被复制, 从而使各个进程拥有各自的拷贝 也就是说, 资源的复制只有在需要写入的时候才进行, 在此之前, 只是以只读方式共享 这种技术使地址空间上的页的拷贝被推迟到实际发生写入的时候 在页根本不会被写入的情况下, 它们就无需复制了 fork() 的实际开销就是复制父进程的页表以及给子进程创建惟一的进程描述符 在系统中, 进程创建后都会马上运行一个可执行的文件, 这种优化可以避免拷贝大量根本就不会被使用的数据 由于用户态 fork 涉及到页表出错的处理, 即当创建的进程引用一个不存在页面中的内存地址时, 就会触发 CPU 产生页错误异常中断, 并把引起中断的线性地址放到 CR2 控制寄存器中 因此处理该中断的过程就可以知道发生页异常的确切地址, 从而可以把进程要求的页面从二级存储空间加载到物理内存中 我们首先要讨论的就是关于用户级别的页错误处理 用户级别的页错误处理在处理用户级的页错误时, 由于进程运行在用户级别, 即 Ring3, 而内存操作需要在特权级别, 因此, 我们在处理用户级别的页错误时需要用到系统调用陷入到特权级别

5 本实验中, 由于进程增加了页错误处理, 相应的进程数据结构增加了一项 ( 可参看实验 3 报告中的 原数据结构 ): // Exception handling void *env_pgfault_upcall; // page fault upcall entry point // 用于记录页错误处理函数的入口 为了完成用户级页错误处理我们需要完成以下几件事情, 让内核知道进程页错误信息并在处理完成后直接返回用户态进程 : 1. 用户注册 user level 的 page fault 处理函数到 env 环境中供内核调用 2. 内核处理部分为 user level 的 page fault 处理函数设置 exception stack 使得 user level 处理函数处理完后直接返回用户态出错代码执行, 并使得内核返回到 user level 的 page fault 处理函数处执行 3.user level 的 page fault 处理函数具体处理 page fault 首先, 为了处理用户态的页错误, 需要在 JOS 内核中注册一个页错误处理函数, 用 env 结构中新增加的 env_pgfault_upcall 记录此信息 具体我们要实现 kern/syscall.c 下面的 ses_env_set_pgfault_upcall 函数, 此函数比较简单, 将用户态自己的处理页错误函数注册到进程结构中 其次, 我们知道用户进程运行在用户栈, 其 esp 指针指向 USTACKTOP, 其堆栈数据保存在 USTACKTOP-PGSIZE 和 USTACKTOP-1 之间 ; 而当发生页错误时, 内核将指定异常处理程序运行在指定的页错误处理堆栈上, 即 user exception stack. 其有效的地址是 UXSTACKTOP-PGSIZE 和 UXSTACKTOP-1 之间, 在此堆栈上运行时, 用户级页处理函数可以使用 JOS 的系统调用解决引起页错误的问题, 然后直接返回用户态出错代码继续执行 在 JOS 系统中, 我们将处于页错误处理的用户进程状态称为 trap-time 在本实验中, 为此状态增加了一个新的数据结构 Utrapframe, 以记录进程页错误之前的信息, 利用此结构返回到出错进程 : struct UTrapframe { /* information about the fault */ uint32_t utf_fault_va; /* va for T_PGFLT, 0 otherwise */ uint32_t utf_err; /* trap-time return state */ struct PushRegs utf_regs; uintptr_t utf_eip; uint32_t utf_eflags; /* the trap-time stack to return to */ uintptr_t utf_esp; }; 此结构与 Trapframe 基本上类似, 就是为了保存 Trapframe 中相关的信息 通过程序我们知道此结构用来保存用户态出错代码的寄存器信息, 当页错误程序处理完后直接返回用户态出错代码继续执行 ( 此处设计的比较灵活 ), 后续我们会详细介绍 我们需要修改 kern/trap.c 中的 page_fault_handler(struct Trapframe *tf) 来处理用户级别的页错误, 使得其把 page faults 分发给用户态的处理函数 设置 exception stack 时应如下图所示, 与上文提到的 Utrapframe 对应起来 :

6 <-- UXSTACKTOP trap-time esp trap-time eflags trap-time eip trap-time eax <-- start of struct PushRegs trap-time ecx trap-time edx trap-time ebx trap-time esp trap-time ebp trap-time esi trap-time edi <-- end of struct PushRegs tf_err (error code) fault_va <-- %esp when handler is run 图 6-1. 进入页错误异常时的 UXSTACKTOP 图 6-1 即为 UXSTACKTOP 中异常堆栈的设置, 一个 Utrapframe 结构, 内核使用这个 stack frame 从页错误处理返回到用户进程, 其中 fault_va 为引起页错误的虚拟地址 在 page_fault_handler() 函数中, 我们用 UTrapframe 结构保存用户态出错程序相关寄存器信息, 然后将用户堆栈换为异常堆栈, 并将 UTrapframe 结构压入异常堆栈 ( 用于返回用户进程 ), 并使当前页错误处理堆栈指向 UTrapframe, 即异常堆栈栈顶, 在具体页错误处理函数里使用 设置完堆栈信息就开始执行具体的页错误处理函数了 注意 : 在页错误处理时也有可能发生嵌套的页错误, 如果发生, 我们只需要在异常堆栈中压入一个空字 (32 位 ), 然后再是一个 UTrapframe 结构, 判断是否发生嵌套页错误, 只需要检查当前堆栈是否已经是在 UXSTACKTOP-PGSIZE 和 UXSTACKTOP-1 之间了 最后, 我们要实现 user level 的页错误处理函数, 需要完成 lib/pfentry.s 以及 lib/pgfault.c 文件 下面对文件中的函数进行说明 : 在 lib/pfentry.s 中的 _pgfault_upcall 汇编函数, 首先是调用具体的页错误处理函数, 然后利用在 trap.c 中压入的 UTrapframe 结构变换到调用缺页处理进程的上下文 首先变换到调用缺页处理的堆栈, 将保存的缺页处理进程的 eip 压入堆栈, 然后空一个字出来保存后面的堆栈信息以免覆盖堆栈信息 剩下的就是换回到原来的堆栈, 返回到调用缺页处理进程了 注意 : 该函数是页错误处理的关键, 是用户态页错误处理函数的总入口, 负责调用具体的 page fault 处理函数 ( 该函数由 lib/pgfault.c 中的代码注册到进程的 env 结构中 ), 并返回到引起 page fault 的代码处执行, 而不必经过内核, 因为在上文中的 Utrapframe 结构中保存了出错前进程的状态, 因此可以直接返回 难点是同时变换堆栈和 EIP 文件 lib/pgfault.c 实现了用户程序可调用的页错误处理函数的设置函数, 包含用户异常栈的初始化和页错误处理函数的设置, 利用前面实现的 sys_env_set_pgfault_upcall() 函数注册用户页错误处理函数 由以上分析, 我们知道了用户进程中的页错误处理过程, 其流程如下图 6-2 所示 :

7 用户进程 set_pgfault_handler(handler) sys_env_set_pgfault_upcall() 注册用户页错误处理函数 如果发生页错误, 在 trap.c 中的 page_fault_handler() 进行处理 _pgfault_upcall() 调用页错误处理函数并返回用户进程 图 6-2. 页错误处理流程 在页错误实验过程中, 为了保证大家自己写的程序段的正确性,JOS 系统安排了一些用户函数, 以进行页错误处理检查, 只有这些用户函数执行结果与程序相同才能继续下面的实验 Copy-on-Write Fork 通过 6.2 关于 COW 的讨论以及上面页错误处理函数的完成, 接下来我们需要完成 JOS 系统中用户进程创建子进程的 Fork() 函数, 其中包括 : static void pgfault(struct UTrapframe *utf) static int duppage(envid_t envid, unsigned pn) envid_t fork(void) 下面对这些函数进行说明 static void pgfault(struct UTrapframe *utf) 具体的 page fault 处理函数, 根据情况分配新页或者进行其他工作 当出现页错误时, 主要是对标为可写的或者 COW 的页面分配新的页面, 复制旧页的数据到新页并映射到旧页的地址处 static int duppage(envid_t envid, unsigned pn) 将父进程的页表空间映射到子进程中, 即共享数据, 并都标记为 COW, 为了以后任一进程写数据时产生页错误, 为其分配新的一页 envid_t fork(void) 这里的 fork 是创建新进程的总入口, 使用 env_alloc() 创建一个新的进程, 然后扫描父进程的整个地址空间将其映射到子进程相关的页表中, 对于父进程, 返回子进程的进程号, 对于子进程, 返回 0 fork 的流程如下 :

8 1. 首先调用 set_pgfault_handler 函数对 pgfault 处理函数进行注册 2. 调用 sys_exofork 创建一个新的进程 3. 映射可写或者 COW 的页都为 COW 的页 4. 为子进程分配 exception stack 5. 为子进程设置用户级的页错误处理句柄 // 此处为容易遗忘的地方 6. 标记子进程为 runnable 在完成以上函数之后, 我们可以用 user/forktree 来测试我们的 fork() 函数, 每一个子进程又创建子进程, 直到三层结束 6.4. 可剥夺调度与 IPC 完成了前面的实验后, 我们通过用户进程 user/spin 发现其创建的子进程一旦运行, 一直死循环, 父进程和内核都不能得到 CPU 继续运行了, 这显然不是操作系统应该有的情况 为了允许内核抢占一个正在运行的进程, 在实验 4 的最后部分, 我们需要修改内核, 使其在时钟中断中调用调度函数, 实现可剥夺的调度, 并完成进程间的消息通信 可剥夺调度 可剥夺调度也就是抢占调度方式, 在这种调度方式中, 进程调度程序可根据某种原则停止正在执行的进程, 将已分配给当前进程的处理机收回, 重新分配给另一个处于就绪状态的进程 在 JOS 中我们的抢占原则是时间片原则 : 即各进程按系统分配给的一个时间片运行, 当该时间片用完或由于该进程等待某事件发生而被阻塞时, 系统就停止该进程的执行而重新进行调度 此处需要用到外部中断, 时钟中断 外部中断 ( 如 : 设备中断 ) 一般是指 IRQs, 在每台 PC 的系统中, 是由一个中断控制器 8259 或是 8259A 的芯片来控制系统中每个硬件的中断 目前共有 16 组 IRQ, 去掉其中用来作桥接的一组 IRQ, 实际上只有 15 组 IRQ 可供硬件调用 在 picirq.c 中 JOS 系统将 IRQs0-15 映射到了 IDT 表中的 IRQ_OFFSET 到 IRQ_OFFSET+15( 即 32-47) 在 JOS 系统中, 在内核态时一直是禁止外部中断的, 外部中断是由 eflags 标志寄存器的 FL_IF 位控制的, 在 JOS 中我们只在进入和离开用户模式时保存和恢复 eflags 寄存器 并确保 FL_IF 标志在用户进程运行时置位, 这样当时钟中断时, 内核可以得到处理器继续调度其他进程 我们需要修改 kern/trapentry.s 和 kern/trap.c 来初始化 IDT 中的外部中断, 所有的外部中断统一调用调度函数, 系统中每隔 10HZ 发生一次时钟中断, 这样, 内核可以获得处理器来调度其他进程 其初始化请参看实验 3 报告中的 节 IPC 在前面,JOS 系统主要是考虑操作系统隔离性, 即每一个进程都好像独占一台机器一样, 而操作系统另一个重要的服务, 进程之间相互通信即 IPC(inter-process communication): 进程间通信 允许进程通信, 进程间可以合作完成一个整体的任务 传统上有许多进程间通信的方式, 比如信号量, 管道等, 我们在 JOS 系统中使用简单

9 的消息传递来实现进程间通信 在 JOS 的 IPC 机制中传送和几首的消息包括两类 : 一个是单字和一个页的映射 ; 后者可以高效传送大量的数据 本实验中, 为了完成进程间通信在进程数据结构中增加了相应的 IPC 数据结构 : // Lab 4 IPC bool env_ipc_recving; // env is blocked receiving void *env_ipc_dstva; // va at which to map received page uint32_t env_ipc_value; // data value sent to us envid_t env_ipc_from; // envid of the sender int env_ipc_perm; // perm of page mapping received // 以上数据结构用来保存 IPC 时的相关信息, 如发送者进程 id, 发送的数据等 实现 IPC 我们首先需要完成 kern/syscall.c 中的 sys_ipc_recv 和 sys_ipc_can_send 系统调用, 其说明如下 : static int sys_ipc_recv(void *dstva) 阻塞调用进程直到接收到一个消息, 然后设置 env 中相应项, 调用调度函数 注意 : 此处要设置返回值 eax 为 0, 即永远不执行 return 语句, 直接调用调度函数即可 static int sys_ipc_try_send(envid_t envid, uint32_t value, void *srcva, unsigned perm) 发送一个消息到 envid 进程, 当 srcva 为 0 时, 传送一个单字, 否则传送一页, 即将当前进程 srcva 地址处的页映射到接收进程同一地址处 注意 : 在以上函数中当调用 envid2env 时设置 checkperm 为 0, 这样任何进程都可以发送消息给任何其他进程, 内核仅仅检查目标进程是否存在 一个进程可以调用 sys_ipc_recv 接收一个消息, 这个系统调用将会阻塞当前进程, 除非它接收到一个消息 单一个进程等待接收一个消息时, 其他任何进程都可以发送消息给它, 在 JOS 系统中没有特殊的要求 与接收一个消息类似, 一个进程调用 sys_ipc_can_send 发送一个消息给指定的进程, 如果指定的进程正在阻塞等待消息, 则发送消息并返回 0 在完成了系统调用中的 IPC 之后, 为了使用户进程可以相互通信, 我们需要完成用户态下的 IPC, 即 lib/ipc.c 文件 int32_t ipc_recv(envid_t *from_env_store, void *pg, int *perm_store) 使用 sys_ipc_revc 系统调用接收消息, 并返回接收的 value void ipc_send(envid_t to_env, uint32_t val, void *pg, int perm) 使用 sys_ipc_try_send 系统调用发送 val 到进程 to_env, 直到发送成功 至此, 我们可以运行用户进程 user/pingpong 和 user/primes 来测试进程之间传送消息 6.5. 常见错误以及调试经验 在完成实验 4 的过程中, 我们遇见了一些错误, 总结一下调试经验, 希望以后做这个实验的人注意一下!! 1. Lab4 是整个实验中比较关键的部分, 包含了 os 内核的核心概念和实现, 并且承接了 2 和 3 的内容 在实验中, 要确保前一阶段的工作完全正确, 再继续往下做,

10 不要累计错误一起调试 2. 设置调试点时, 往往用到 printf 输出信息, 因为涉及文件较多, 可以在 printf 语句中增加该调试点所处的文件和函数 3. 在完成 sys_exofork 函数时, 一定要细心, 在创建子进程时一定也要把页错误处理句柄复制给子进程, 否则, 后面用户态 fork 时错误很难发现, 因为当用户态的页错误时其找不到页错误处理句柄, 会出现异常 4. 在本次实验中, 每次编译时经常会报用户进程错误, 而每次加一条语句比如 :printf 语句, 或者 exit() 语句就通过了, 这个错误很诡异, 后面发现是编译器的问题, 换成其他 Linux 系统就 ok 了

现在进入实验 4: PART A: 实现调度算法 第一步 : 修改 kern/sched.c 里面的函数 sched_yield, 具体代码如下 : 这个函数很简单, 就是从当前环境的下一个环境一直遍历到当前环境, 如果有可以运行的就 开始运行 如果没有, 就进入 idle 环境 然后修改系统调用,

现在进入实验 4: PART A: 实现调度算法 第一步 : 修改 kern/sched.c 里面的函数 sched_yield, 具体代码如下 : 这个函数很简单, 就是从当前环境的下一个环境一直遍历到当前环境, 如果有可以运行的就 开始运行 如果没有, 就进入 idle 环境 然后修改系统调用, JOS 实验四实验记录作者 : 卓达城指导老师 : 邵志远单位 : 华中科技大学集群网络与服务计算实验室 备注 : 本文档重点说明 exofork 函数的返回机制 ( 下面将以黑体标志 ), 如果有不当, 敬请发邮件到我的邮箱 本文档最精彩的地方在于缺页中断处理函数的返回机制和堆栈的切换, 文中以灰底, 不同字体 加粗显示 还有一处就是 vpd 和 vpt 的使用, 这里用了回环搜索 pgdir 和二级页表,

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

第一章 概论

第一章  概论 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

Guava学习之Resources

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

More information

<4D F736F F D20B5DACEE5D5C22EC7C0D5BCCABDB5F7B6C82E646F63>

<4D F736F F D20B5DACEE5D5C22EC7C0D5BCCABDB5F7B6C82E646F63> 第五章. 抢占式调度 (lab3)(v0.1) 5.1. 实验目标 MIT 这次实验是在 Lab2 的基础上实现, 目标是在他们的 JOS 操作系统中实现进程管理和中断的功能 程序的几乎所有代码都集中在 env.c 和 trap.c 文件中 实际上, 该实验可以分为 2 部分 : 进程环境和中断处理 ( 包括系统调用 ) 前者通过设置进程控制块和编写进程创建 进程中止和进程调度程序, 实现如何对进程进行管理

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

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

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

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

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

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

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

More information

Linux kernel exploit研究和探索

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

More information

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

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

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

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

专题一.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

<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

1 Introduction 我在实验中主要参考了华中科技大学邵志远老师写的 JOS 实习指导, 在邵老师的主页上 htm 可以找到 但是这次实验的指导远远不如 lab1 的指导详尽, 所以我这里需要补充的内

1 Introduction 我在实验中主要参考了华中科技大学邵志远老师写的 JOS 实习指导, 在邵老师的主页上  htm 可以找到 但是这次实验的指导远远不如 lab1 的指导详尽, 所以我这里需要补充的内 操作系统 JOS 实习第三次报告 张弛 00848231, zhangchitc@gmail.com April 13, 2011 Contents 1 Introduction 2 2 User Environments and Exception Handling 2 2.1 Environment State.......................... 2 2.2 Allocating

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

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

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM Oracle Solaris Studio 12.2 DLight 2010 9 2 2 3 DLight 3 3 6 13 CPU 16 18 21 I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AMP Apache MySQL

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

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc 在 VMWare-5.5+RedHat-9 下建立 本机 QTopia-2.1.1 虚拟平台 张大海 2008-5-9 一 资源下载 1. 需要以下安装包 : tmake-1.13.tar.gz qtopia-free-source-2.1.1.tar.gz qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz qt-x11-free-3.3.4.tar.gz

More information

没有幻灯片标题

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

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

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

4.process-part1.pptx

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

More information

上海盛瑞电子有限公司

上海盛瑞电子有限公司 2015/5/22 1 / 9 一运动指令 MoveJ MoveJ[\Conc,]ToPoint,Speed[\V] [\T],Zone[\Z][\Inpos],Tool[\WObj]; 1 [\Conc,]: 协作运动开关 (switch) 2 ToPoint: 目标点, 默认为 * (robotarget) 3 Speed: 运行速度数据 (speeddata) 4 [\V]: 特殊运行速度 mm/s

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

Andes Technology PPT Temp

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

More information

Lab 03

Lab 03 Lab 03 实验提交 截止时间 : 2016/04/28 23:59:59 ( 如无特殊原因, 迟交的作业将损失 50% 的成绩 ( 即使迟了 1 秒 ), 请大家合理分配时间 ) 请大家在提交的实验报告中注明你的邮箱, 方便我们及时给你一些反馈信息 学术诚信 : 如果你确实无法完成实验, 你可以选择不提交, 作为学术诚信的奖励, 你将会获得 10% 的分数 ; 但若发现抄袭现象, 抄袭双方 (

More information

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

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

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

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

untitled

untitled ,, : ; ; ; ; ; ;,, : ( ) : : : ( ) : : : 6 1 6 1 1 : ,,,,,,,,, :,,,,,,, ,,,,,,,,,, ;, ;,,,,,,,,, : 1. 2.,,, 3.,,,,,,,, ;,,,,, : 1.,, 2.,, ;,,,, 3.,,,,,, 4.,,, ;,,, ;,,,,,,,,,,,,,, ;,,,,,,,, : 1. :,,,

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

378高雄市都市計畫說明書

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

More information

16_Windows interrupt context kernel overflow exploits_BY_FLASHSKY

16_Windows interrupt context kernel overflow exploits_BY_FLASHSKY Windows interrupt context kernel overflow exploits FlashSky@xfocus.org FangXing@venustech.com.cn 特别感谢 KeJi(KeJi@venustech.com.cn) 在 WINDOWS 内核方面的讨论和参与 感谢 感谢 ALERT7 和焦点所有的成员感谢启明星辰积极防御实验室的所有成员 仅以此文献给所有不甘于平凡

More information

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony Ioncube Php Encoder 8 3 Crack 4 ->>->>->> DOWNLOAD 1 / 5 2 / 5 Press..the..General..Tools..category4Encrypt..and..protect..files..with..PHP..encoding,..encryption,..ob fuscation..and..licensing... 2016

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

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

PowerPoint Presentation

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

More information

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

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

More information

國立臺東高級中學102學年度第一學期第二次期中考高一國文科試題

國立臺東高級中學102學年度第一學期第二次期中考高一國文科試題 國 立 臺 東 高 級 中 學 102 學 年 度 第 一 學 期 第 二 次 期 中 考 高 一 國 文 科 試 題 卷 畫 答 案 卡 : 是 否 ( 班 級 座 號 科 目 代 號 畫 錯 扣 5 分 ) 適 用 班 級 :1-1 1-9 1-11 考 試 範 圍 : 梧 桐 樹 醉 翁 亭 記 古 橋 之 戀 樂 府 詩 選 論 語 選 一 默 寫 : 依 原 文 將 正 確 文 句 填 入

More information

!! :!!??!!?!??!!!... :... :'?'?! :' ' :'?' :'?' :'!' : :? Page 2

!! :!!??!!?!??!!!... :... :'?'?! :' ' :'?' :'?' :'!' : :?  Page 2 ??????...! ; --- --- --- : ---!!! ---!! ---?????... http://www.phpget.cn Page 1 !! :!!??!!?!??!!!... :... :'?'?! :' ' :'?' :'?' :'!' : :? http://www.phpget.cn Page 2 ---...?!... :...! :...?!!...!!?!?!...?!

More information

Microsoft Word - Sunday20130908

Microsoft Word - Sunday20130908 權 能 的 來 源 安 童 牧 師 事 工 简 介 : -- 摘 自 安 童 牧 師 2013 年 9 月 8 日 主 日 信 息 神 呼 召 他, 最 初 在 街 上 接 納 養 育 得 痲 瘋 的 孩 子, 神 藉 着 一 个 单 纯 顺 服 的 仆 人 做 了 极 大 的 事 工, 現 在,8000 印 度 兒 童 參 與 他 的 服 事 目 前, 二 萬 三 千 多 兒 童 參 與 他 的

More information

秘密大乘佛法(下)

秘密大乘佛法(下) 印 度 佛 教 史 (25) 101 / 12 / 24 釋 清 德 秘 密 大 乘 佛 法 ( 下 ) 印 度 佛 教 思 想 史 第 十 章 第 三 節 金 剛 乘 與 天 行 一 秘 密 大 乘 稱 金 剛 乘 採 取 表 徵 主 義 1 三 四 五 方 佛 大 乘 佛 法 興 起, 傳 出 十 方 現 在 的 無 數 佛 名 現 在 有 佛 在 世, 可 以 滿 足 佛 涅 槃 後, 佛 弟

More information

<D2B0D0C4D3C5D1C52DC8CED6BEC7BF202D20BCC7CAC2B1BE>

<D2B0D0C4D3C5D1C52DC8CED6BEC7BF202D20BCC7CAC2B1BE> 任 志 强 回 忆 录 哪 怕 一 个 再 渺 小 的 个 人, 也 可 以 为 一 段 历 史, 甚 至 一 段 很 重 要 的 历 史 背 书! 一 个 变 革 的 时 代, 一 群 过 河 的 人, 一 种 野 心 优 雅 的 实 现! 一 部 民 营 企 业 和 创 业 人 生 的 心 灵 史 生 死 书! 平 时 就 很 敢 说 的 任 志 强, 这 次 说 的 更 赤 裸! 历 时 两

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

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

PowerPoint Presentation

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

More information

untitled

untitled : 36 236 : (025)52121888 : (025)52121555/800 8289722 : 211100 h t t p://www.phoenixcontact.com.cn e-mail: phoenix@phoenixcontact.com.cn MNR 52005577/07.04.2010-01 Printed in China PHOENIX CONTACT 2010

More information

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

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

More information

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

L10 Virtual Memory

L10 Virtual Memory Lecture 5: Virtual Memory II 简单分区 (Partitioning) 主存分配 : 操作系统 : 固定 用户区 : 分区 简单分区方案 : 使用长度不等的固定长分区 (fixed-size partition) 当一个进程调入主存时, 分配给它一个能容纳它的最小的分区 对于需 96K 的进程可分配 256K 的分区 简单分区方式的缺点 : 因为是固定长度的分区, 故可能会浪费主存空间

More information

今天刚发现的, 比较简单, 于是就来简单分析下吧 该感染样本很简单, 新加了个区段放病毒执行代码, 执行病毒代码, 最后跳回原入口点来执行原文件 下面就是感染后的代码的简单分析 : ; =============== S U B R O U T I N E =====================

今天刚发现的, 比较简单, 于是就来简单分析下吧 该感染样本很简单, 新加了个区段放病毒执行代码, 执行病毒代码, 最后跳回原入口点来执行原文件 下面就是感染后的代码的简单分析 : ; =============== S U B R O U T I N E ===================== 吾爱破解论坛 [LCG] [LSG] 立足软件安全和病毒分析最前端, 丰富的技术版块交相辉映, 由无数加密解密及反病毒爱好者共同维护, 留给世界一抹值得百年回眸的惊 艳, 沉淀百年来计算机应用之精华与优雅, 信息线条与生活质感淡定交融, 任岁月流转, 低调而奢华的技术交流与研究却是亘古不变 标题 : 一个感染样本的简单分析 作者 :ximo 今天刚发现的, 比较简单, 于是就来简单分析下吧 该感染样本很简单,

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information

ST template WORD

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

More information

Cache Analysis

Cache Analysis 操作系统内核更多的虚拟材料 2002 年 11 月 21 日 L22 操作系统内核 1 为什么要用操作系统? 我们已经得到 : 单序列机, 它每次能做一件事 执行一条指令 一次 I/O 操作 一个程序 小配件的通用性 例如,I/O 设备 它可以做一些略微有些不同的相似事情 我们想要 : 在阅读电子邮件的同时可以收听 MP3; 同时 访问磁盘 网络和屏幕 ; 编写一个能对任何人的磁盘执行 I/O 操作的程序

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

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

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

More information

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

《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

投影片 1 9 1 9-1 Windows XP Windows Server 2003 Mac OS Linux, 都 (OS, Operating System ) 2 3 , 來, 行 3 理 行 4 ,, (UI, User Interface), 滑, 令 列 (CLI, Command-Line Interface) (GUI, Graphical User Interface) 2 5 令 列,

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

Android 框架虚拟化实战 董福源 360 手机卫士 2017.thegiac.com

Android 框架虚拟化实战 董福源 360 手机卫士 2017.thegiac.com Android 框架虚拟化实战 董福源 360 手机卫士 什么是虚拟化 原生 apk 在封闭系统内 免安装运行 Android 系统的一种沙箱技术 技术架构 Sandbox apps Android OS 目录 Sandbox apps Android OS Activity 插件化 只能启动 Manifest 中声明的 activity 占坑方案 欺骗 AMS Activity 启动过程 ContentImpl

More information

C 1

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

More information

Microsoft Word 正文-ctp

Microsoft Word 正文-ctp CHAPTER 1 第 1 章 操作系统概述 考纲内容 1 2 3 考题分布 年份 单选题 / 分 综合题 / 分 考查内容 2010 1 2 0 2011 1 2 0 2012 1 2 0 2013 1 2 0 2014 2 2 0 2015 1 2 0 知识框架 复习提示 本章是操作系统的概述, 读者应通过对本章的学习初步了解操作系统课程的框架 本章内容通常以选择题的形式考查, 操作系统的功能

More information

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

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

More information

一 学 校 基 本 情 况 目 录 二 部 门 预 算 报 表 ( 一 ) 收 支 总 表 ( 二 ) 收 入 总 表 ( 三 ) 支 出 总 表 ( 四 ) 财 政 拨 款 支 出 表 三 部 门 预 算 报 表 说 明 ( 一 ) 收 支 总 表 说 明 ( 二 ) 收 入 总 表 说 明 (

一 学 校 基 本 情 况 目 录 二 部 门 预 算 报 表 ( 一 ) 收 支 总 表 ( 二 ) 收 入 总 表 ( 三 ) 支 出 总 表 ( 四 ) 财 政 拨 款 支 出 表 三 部 门 预 算 报 表 说 明 ( 一 ) 收 支 总 表 说 明 ( 二 ) 收 入 总 表 说 明 ( 浙 江 大 学 2016 年 部 门 预 算 2016 年 5 月 1 一 学 校 基 本 情 况 目 录 二 部 门 预 算 报 表 ( 一 ) 收 支 总 表 ( 二 ) 收 入 总 表 ( 三 ) 支 出 总 表 ( 四 ) 财 政 拨 款 支 出 表 三 部 门 预 算 报 表 说 明 ( 一 ) 收 支 总 表 说 明 ( 二 ) 收 入 总 表 说 明 ( 三 ) 支 出 总 表 说 明

More information

目 录 一 学 校 基 本 情 况 二 2016 年 预 算 报 表 ( 一 ) 中 南 大 学 收 支 预 算 总 表 ( 二 ) 中 南 大 学 收 入 预 算 表 ( 三 ) 中 南 大 学 支 出 预 算 表 ( 四 ) 中 南 大 学 财 政 拨 款 支 出 预 算 表 三 2016 年

目 录 一 学 校 基 本 情 况 二 2016 年 预 算 报 表 ( 一 ) 中 南 大 学 收 支 预 算 总 表 ( 二 ) 中 南 大 学 收 入 预 算 表 ( 三 ) 中 南 大 学 支 出 预 算 表 ( 四 ) 中 南 大 学 财 政 拨 款 支 出 预 算 表 三 2016 年 中 南 大 学 2016 年 部 门 预 算 二 一 六 年 五 月 1 目 录 一 学 校 基 本 情 况 二 2016 年 预 算 报 表 ( 一 ) 中 南 大 学 收 支 预 算 总 表 ( 二 ) 中 南 大 学 收 入 预 算 表 ( 三 ) 中 南 大 学 支 出 预 算 表 ( 四 ) 中 南 大 学 财 政 拨 款 支 出 预 算 表 三 2016 年 预 算 情 况 说 明 (

More information

信息参考

信息参考 内 部 资 料 注 意 保 密 信 息 参 考 2016 年 第 1 期 ( 总 第 26 期 ) 党 政 办 公 室 编 2016 年 2 月 29 日 工 作 要 点 教 育 部 2016 年 工 作 要 点 (1) 中 共 北 京 市 委 教 育 工 作 委 员 会 北 京 市 教 育 委 员 会 北 京 市 人 民 政 府 教 育 督 导 室 2015 年 工 作 要 点 (10) 中 共

More information

Microsoft Word - 15dbtb007

Microsoft Word - 15dbtb007 第 7 期 中 共 浙 江 大 学 委 员 会 办 公 室 2015 年 12 月 16 日 按 :2015 年 12 月 15 日, 学 校 召 开 了 2015 年 党 建 工 作 会 议, 党 委 书 记 金 德 水 同 志 作 出 重 要 讲 话, 深 刻 分 析 了 学 校 改 革 发 展 面 临 的 形 势, 对 加 强 和 改 进 学 校 党 的 建 设 进 行 了 部 署, 对 充

More information

RxJava

RxJava RxJava By 侦跃 & @hi 头 hi RxJava 扩展的观察者模式 处 观察者模式 Observable 发出事件 Subscriber 订阅事件 bus.post(new AnswerEvent(42)); @Subscribe public void onanswer(answerevent event) {! }! Observable observable = Observable.create(new

More information

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

A Preliminary Implementation of Linux Kernel Virus and Process Hiding 邵 俊 儒 翁 健 吉 妍 年 月 日 学 号 学 号 学 号 摘 要 结 合 课 堂 知 识 我 们 设 计 了 一 个 内 核 病 毒 该 病 毒 同 时 具 有 木 马 的 自 动 性 的 隐 蔽 性 和 蠕 虫 的 感 染 能 力 该 病 毒 获 得 权 限 后 会 自 动 将 自 身 加 入 内 核 模 块 中 劫 持 的 系 统 调 用 并 通 过 简 单 的 方 法 实 现 自 身 的

More information

Outline 1 中断信号的作用和处理的一般原则 2 I/O 设备如何引起 CPU 中断 3 x86 CPU 如何在硬件级处理中断信号中断和异常的硬件处理 : 进入中断 / 异常中断和异常的硬件处理 : 从中断 / 异常返回 4 Linux 内核中软件级中断处理及其数据结构初始化中断描述符表低级异

Outline 1 中断信号的作用和处理的一般原则 2 I/O 设备如何引起 CPU 中断 3 x86 CPU 如何在硬件级处理中断信号中断和异常的硬件处理 : 进入中断 / 异常中断和异常的硬件处理 : 从中断 / 异常返回 4 Linux 内核中软件级中断处理及其数据结构初始化中断描述符表低级异 Linux 操作系统分析 Chapter 5 中断和异常 陈香兰 (xlanchen@ustceducn) 计算机应用教研室 @ 计算机学院嵌入式系统实验室 @ 苏州研究院中国科学技术大学 Fall 2014 October 21, 2014 陈香兰 (xlanchen@ustceducn) ( 计算机应用教研室 Linux 操作系统分析 @ 计算机学院嵌入式系统实验室 Chapter 5 中断和异常

More information

DVK530/531扩展板

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

More information

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F 1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o

More information

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

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

More information

Microsoft Word - PS2_linux_guide_cn.doc

Microsoft Word - PS2_linux_guide_cn.doc Linux For $ONY PlayStatioin2 Unofficall General Guide Language: Simplified Chinese First Write By Beter Hans v0.1 Mail: hansb@citiz.net Version: 0.1 本 人 是 菜 鸟 + 小 白 欢 迎 指 正 错 误 之 处, 如 果 您 有 其 他 使 用 心 得

More information

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016 档 案 局 2016 年 度 部 门 预 算 1 目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016 年 度 市 级 部 门 财 政 拨 款 支 出 预

More information

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 168738.36 一 一 般 公 共 服 务 支 出 53.83 二

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 168738.36 一 一 般 公 共 服 务 支 出 53.83 二 2015 年 度 部 门 决 算 报 表 ( 含 三 公 经 费 决 算 ) 2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 168738.36 一 一 般 公 共 服 务 支 出 53.83 二 上 级 补 助 收 入

More information

内 容 1 2 3 4 培 训 目 标 基 础 知 识 常 用 监 控 命 令 在 实 战 中 综 合 运 用 2

内 容 1 2 3 4 培 训 目 标 基 础 知 识 常 用 监 控 命 令 在 实 战 中 综 合 运 用 2 Linux 常 用 监 控 命 令 介 绍 基 础 应 用 组 梁 若 羽 2011-07-12 1 内 容 1 2 3 4 培 训 目 标 基 础 知 识 常 用 监 控 命 令 在 实 战 中 综 合 运 用 2 培 训 目 标 掌 握 常 用 监 控 命 令 的 用 途 和 启 用 方 法 熟 悉 各 个 关 键 输 出 参 数 的 真 实 含 义 了 解 Linux 操 作 系 统 的 一

More information

嵌入式Linux/WinCE/VxWorks培训免费讲座

嵌入式Linux/WinCE/VxWorks培训免费讲座 走近 WinCE BSP 开发 www.farsight.com.cn 目录 1. Windows CE 系统概述 2. Windows Embedded 家族产品介绍 3. 技术特点 4. Platform Builder 开发环境简介 5. WinCE 5.0 的内存管理架构 6. WinCE 6.0 在内存管理方面的增强 Windows CE 系统概述 1. 良好的可裁剪性和可移植性 2. 具备足以满足绝大多数应用场合的实时性

More information

的 開 銷, 請 務 必 先 和 家 裡 討 論 後 再 做 決 定 二 研 修 學 校 簡 介 卡 內 基 美 隆 大 學 (Carnegie Mellon University), 位 於 賓 州 匹 茲 堡 會 選 擇 來 這 裡 交 換, 我 相 信 大 部 分 的 人 都 已 經 知 道

的 開 銷, 請 務 必 先 和 家 裡 討 論 後 再 做 決 定 二 研 修 學 校 簡 介 卡 內 基 美 隆 大 學 (Carnegie Mellon University), 位 於 賓 州 匹 茲 堡 會 選 擇 來 這 裡 交 換, 我 相 信 大 部 分 的 人 都 已 經 知 道 學 海 專 用 學 海 飛 颺 / 學 海 惜 珠 學 生 出 國 研 修 心 得 報 告 獲 補 助 年 度 105 薦 送 學 校 系 所 年 級 中 文 姓 名 研 修 國 家 研 修 學 校 國 立 交 通 大 學 電 機 工 程 學 系 四 年 級 陳 瑞 邦 美 國 卡 內 基 美 隆 大 學 (Carnegie Mellon University) 一 緣 起 趁 年 輕, 給 自 己

More information

浙江大学本科论文模板

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

More information