time sharing——>virtualization.

OS需要low-level machinery mechanisms and high-level intelligence。

前者是time or space sharing,how的问题。后者是scheduling policy,which的问题。

运行程序的操作系统提供的抽象成为进程。进程可以寻址的内存(地址空间)是进程的一部分。

Process Creation:程序最初以某种executable format驻留在磁盘上,1.OS首先从磁盘将code和static data的字节读入内存。最原始的OS采用一次性导入,现在OS仅在程序需要时加载代码和数据(延迟加载)。2.OS为程序的run-time stack分配内存,C将堆栈用于局部变量、函数参数和返回地址。4.OS还为heap分配部分内存。C中heap用于显示请求的动态分配数据(malloc申请,free释放),数据结构也需要堆。5.OS还执行一些其他初始化任务(尤其I/O相关),例如:默认每个进程有三个打开的文件描述符。6.跳转到main(),OS将CPU的控制权转移到新创建的进程上开始程序执行。

Process States

在从磁盘中读取或者从网络中等数据包时,OS识别P0未使用CPU而启动运行P1,I/O完成时将P0置于Ready状态,P1完成则启动P2.

Data Structures:1.例如:OS使用process list(每一条目称作process control block)记录三种状态进程的各种信息。对于已经停止的进程,register context保持其内容;当进程停止时,register将保存到该存储单元;通过将他们的值放回实际物理寄存器中,OS恢复该进程。这被称为context switch。

还有一个进程被创建时的初始状态和进程退出但没有被清理掉的最终状态(zombie state),final state非常有用,允许其他进程(通常父进程)检查返回代码判断是否执行成功(成功完成返回0)。完成后,父进程最后一次调用(例如wait())以等待子进程完成,并向OS表明他可以清除与now-extinct process相关的数据结构。

 

Process API:

1.fork.通过系统调用创建几乎完全相同的进程,根据初始参数或传入变量不同,两进程可以做不同的事。fork后,OS给新进程分配地址空间、寄存器和PC,将原来进程所有值(复制fork后的代码)复制进去,只有少数值不同。两进程的fpid不同在于“相当于链表,进程形成了链表,父进程的fpid(p 意味point)指向子进程的进程id, 因为子进程没有子进程,所以其fpid为0.”fork出错可能1、进程数达到上限,2、内存不足。

2.wait.父进程有时等待子进程做完工作是有必要的,使用wait()或waitpid()。

3.exec().

1和3的分离使得shell可以在fork后exec之前运行代码,改变即将运行代码的环境。

prompt> wc p3.c > newfile.txt      创建子进程且调用exec()之前,shell关闭标准输出流并打开newfile,任何输出都被发送到文件,重定向(<  >)是OS管理file descriptors。一般OS从0查找可用file descriptors,STDOUT FILENO可用且在调用open()时被赋值,后续都写入文件而不是屏幕。

管道也能实现相同作用。不过,一个进程的输出连接着inkernel pipe(例如队列)。自行查看(grep和wc)

signal()

ps

Virtualization的更多相关文章

  1. [WPF]WPF Data Virtualization和UI Virtualization

    这篇博客将介绍WPF中的虚拟化技术. 1. Data Virtualization 通常情况下我们说数据虚拟化是指数据源没有完全加载,仅加载当前需要显示的数据呈现给用户.这种场景会让我们想到数据分页显 ...

  2. Geneve: Generic Network Virtualization Encapsulation

    Earlier this year, VMware, Microsoft, Red Hat and Intel published an IETF draft on Generic Network V ...

  3. [Virtualization][SDN] VXLAN到底是什么 [转]

    写在转发之前: 几个月以前,在北大机房和燕园大厦直接拉了一根光钎.两端彼此为校园内公网IP.为了方便连接彼此机房,我做个一个VPN server在燕园的边界,北大机房使用client拨回.两个物理机房 ...

  4. Virtualization API之libvirt

    The virtualization API 之开源 libvirt探究 By Ruiy: libvirt supports Hypervisors(注,相关的hypervisors项目的权威网站已经 ...

  5. this computer does not support Intel Virtualization Technology (VT-x) .Haxm can'not be installed

    this computer does not support Intel Virtualization Technology (VT-x) .Haxm can'not be installed 本机不 ...

  6. 【转】How to Start Intel Hardware-assisted Virtualization (hypervisor) on Linux to Speed-up Intel Android x86 Emulator

    [转]How to Start Intel Hardware-assisted Virtualization (hypervisor) on Linux to Speed-up Intel Andro ...

  7. Connecting Docker for Cloud Services using SDN and Network Virtualization

     Abstract The explosive scale of container CPUs needs highly efficient network virtualization Chal ...

  8. RH133读书笔记(10)-Lab 10 Exploring Virtualization

    Lab 10 Exploring Virtualization Goal: To explore the Xen virtualization environment and the creation ...

  9. <Mastering KVM Virtualization>:第一章 了解Linux虚拟化

    本章为读者提供了Linux虚拟化中流行技术的深刻见解,以及相较于其他同类技术的优势特点.本书共有14章,囊括了KVM虚拟化中的各个方面,从KVM的内部构造开始,并包括了诸如软件定义网络(SDN),性能 ...

  10. <Mastering KVM Virtualization>:第三章 搭建独立的KVM虚拟化

    在第二章,你了解了KVM的内部结构:在本章中,您将了解如何将Linux服务器设置为虚拟化主机.我们正在讨论将KVM用于虚拟化并将libvirt作为虚拟化管理引擎. KVM开启了虚拟化并利用你的服务器或 ...

随机推荐

  1. Vue.directive添加全局指令详解

    自定义指令创建: Vue.directive( 'mycolor(指令名称:推荐全部小写,驼峰命名会出现问题,看最后面)' , { bind:function(){}, //本例只介绍inserted ...

  2. spring整合redis(哨兵模式)

    首先服务器搭建哨兵模式(我这里使用的是Windows8系统),感谢两位博主,少走不少弯路,在此给出链接:服务器哨兵模式搭建和整合哨兵模式 什么一些介绍就不介绍了,可以看一下连接,比较详细,初次接触,当 ...

  3. 【基于微信小程序的社区电商平台】Alpha迭代心得

    项目团队:小豆芽 开发周期:11.5-12.2(Alpha版本) 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决问题:当前电商平台卖家买家角 ...

  4. content-type的几种取值

    四种常见的 POST 提交数据方式 我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范.规范把 HTTP 请求分为三个部分:状态行.请求头.消息主体.类似于下 ...

  5. C#异常:未将对象引用设置到对象的实例。

    异常:未将对象引用设置到对象的实例. 一般是定义的变量或者数组等,没有赋初始值. 赋初始值后问题解决.

  6. Main Steps to Setup an ODI data sync

    0. Get ODI installed 1. Topo physical Architecture/new physical schema 2. New Logical schema 3. New ...

  7. 19.Scharr滤波器

    //Scharr void Test_Scharr() { Mat grad_x,grad_y; Mat abs_grad_x,abs_grad_y,dst; g_srcImage=imread(&q ...

  8. 关于redis的安装

    下载redis 我这边下载redis4.0.1版本, 然后解压 然后执行yum -y install gcc gcc-c++ libstdc++-devel 然后cd //qbtapp/redis-4 ...

  9. WebStorm 安装及使用

    WebStrom 插件安装 File(文件) -> settings(设置) -> Plugins 即可调出设置中的插件选项. 或者 按 快捷键ctrl + alt + s也可调出设置菜单 ...

  10. vue+element-ui实现表格编辑(增加或删除行,删除单行或删除多行)

    <template> <div class="app-container"> <div class="filter-container&qu ...