操作系统
yofer张耀琦
我喜欢自己开朗的性格
展开
-
操作系统 - 死锁(Deadlock)的概述、条件、对策
资源 可抢占资源(preemptable resource)可以从拥有它的进程中抢占而不会产生任何副作用,存储器就是一类可抢占的资源。可抢占资源有时有潜在的死锁危险,通常可以通过在进程之间重新分配资源而化解。 相反,不可抢占资源(nonpreemptable resource)是指在不引起相关的计算失败的情况下,无法把它从占有它的进程处抢占过来。如果一个进程已经原创 2015-08-23 16:55:01 · 2166 阅读 · 0 评论 -
i++是否原子操作?并解释为什么???????
不是原子操作。理由:1.i++分为三个阶段:内存到寄存器寄存器自增写回内存这三个阶段中间都可以被中断分离开. 2.++i首先要看编译器是怎么编译的,某些编译器比如VC在非优化版本中会编译为以下汇编代码:__asm{ moveax, dword ptr[i] inc eax mov dwo原创 2015-08-22 20:16:01 · 1855 阅读 · 0 评论 -
操作系统 - 对于不同进程中指令的交替执行不要做任何假设
eg1:// fork.c// 2015-08-26 Lucifer Zhang// use fork creat a new process#include "csapp.h"int main() { pid_t pid; int x = 1; pid = Fork(); //line:ecf:forkreturn if (pid == 0原创 2015-08-26 14:29:16 · 1276 阅读 · 0 评论 -
操作系统 - 程序不会按照特定的顺序回收子进程
eg1:// waitpid1.c// 2015-08-26 Lucifer Zhang// Using the waitpid function to reap zombie children in no// particular order.#include "csapp.h"#define N 2int main() { int status, i;原创 2015-08-26 15:15:40 · 980 阅读 · 0 评论 -
操作系统 - Linux进程实现的内部结构
在进程描述符中进入几个字段来表示进程之间的父子关系和兄弟关系。 图3-4显示了一组进程间的亲属关系。 表3-4:建立非亲属关系的进程描述符字段 在某些情况下,内核必须能从进程的PID到处对应的进程描述符指针,顺序扫描进程链表并检查进程描述符的pid字段是可行但相当低效的。为了加速查找,原创 2015-08-27 16:19:52 · 1621 阅读 · 0 评论 -
操作系统 - unix和windows下进程异同
在UNIX系统中,只有一个系统调用可以用来创建新进程:fork。这个系统调用会创建一个与调用进程相同的副本。在调用了fork之后,这两个进程(父进程和子进程)拥有相同的存储映像、同样的环境字符串和同样的打开文件。这就是全部情形。同城,子进程接着执行execve或一个类似的系统调用,以修改其存储映像并运行一个新的程序。例如,当一个用户在shell中键入命令时,shell就创建一个子进程,然后,这个子原创 2015-08-23 09:13:48 · 2678 阅读 · 2 评论 -
操作系统 - 经典的线程模型
需要线程的原因分析 人们需要多线程的主要原因是,在许多应用中同时发生着多种活动,其中某些活动随着时间的推移会被阻塞。通过将这些应用程序分解成可以准并行运行的多个顺序线程,程序设计模型会变得更简单。 1、在有了多线程概念之后,我们才加入了一种新的元素:并行实体共享同一个地址空间和所有可用数据的能力。对于某些应用而言,这种能力是必须的,而这正式多进程模型(它们具有不原创 2015-08-23 09:37:43 · 1847 阅读 · 1 评论