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. Java内存溢出优化性能优化

    高性能应用构成了现代网络的支柱.LinkedIn有许多内部高吞吐量服务来满足每秒数千次的用户请求.要优化用户体验,低延迟地响应这些请求非常重要. 比如说,用户经常用到的一个功能是了解动态信息——不断更 ...

  2. Android 音视频深入 十九 使用ijkplayer做个视频播放器(附源码下载)

    项目地址https://github.com/979451341/Myijkplayer 前段时候我觉得FFmpeg做个视频播放器好难,虽然播放上没问题,但暂停还有通过拖动进度条来设置播放进度,这些都 ...

  3. 软件151 王楚博 JavaEE的配置

    一.准备以下压缩包 1.JDK1.7 文件:jdk1.7.rar 2. eclipse-jee-mars-2 文件:32位系统准备eclipse-jee-mars-2-win32.zip,64位系统准 ...

  4. 【转】 android5.1里面的user-app的默认权限设置!

    在 frameworks/base/services/core/java/com/android/server/AppOpsPolicy.java中:public boolean isControlA ...

  5. AStar算法()

    把网上的AStar算法的论述自己实现了一遍,一开始只是最基础的实现.当然,现在AStar算法已经演变出了各种优化的版本,这篇也会基于各种优化不断的更新. 如果对算法不熟悉可以看下Stanford的这篇 ...

  6. 浅析android系统设计中的回调思想

    一.为何写作本文  在慢慢深入接触android开发的过程中,我越来越发现android中(至少应用曾的开发)用到了很多回调的思想.比如activity的生命周期,fragment的生命周期,皆是回调 ...

  7. 正则表达式判断QQ号格式是否正确

    #正在表达式匹配QQ号格式是否正确#QQ号假如长度为5-11位,纯为数字 import rewhile 1: qq=input("请输入QQ号:") result=re.finda ...

  8. SQL-56 获取所有员工的emp_no、部门编号dept_no以及对应的bonus类型btype和recevied,没有分配具体的员工不显示

    获取所有员工的emp_no.部门编号dept_no以及对应的bonus类型btype和recevied,没有分配具体的员工不显示CREATE TABLE `dept_emp` ( `emp_no` i ...

  9. input 特殊字符限制

    ng-pattern="/^[A-Za-z0-9_,\.\u4e00-\u9fa5\s]+$/"

  10. Atom本地安装插件右上角出现红色报错解决方案

    在github上搜索你相中的插件(Package),并下载ZIP包或直接克隆项目到本地.然后将该包直接复制到C盘中的用户下的 .atom\packages\ 文件夹下,注意 atom前面有一个点. 然 ...