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. Kali Linux Vmware虚拟机(新手)安装

    准备工作: 1.安装VMware workstation 软件 2.下载好kali linux 的ios系统文件 3.打开电脑的虚拟化支持(Intel VT-x/EPT或AMD-V/RVI(V)) 虚 ...

  2. myBatis简学

    mybatis使用: ①拷贝相关mybits ②编写对象关系映射,一般都是实体类名+Mapper.xml的格式 ③编写mybits配置文件: a)配置环境 b)配置映射文件地址 ④编写对象操作方法: ...

  3. awk shell

    作业一:整理博客,内容包含awk.变量.运算符.if多分支 awk   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2 ...

  4. SSM搭建遇到的坑

    1,Error:(6, 24) java: package org.junit.runner does not exist 错误原因: 当时傻傻的把zl 包(单元测试包)放在了src/main/jav ...

  5. mysql 查询时指定校对规则

    为了能在查询时忽略字段大小写,又不想修改数据表的属性配置,就在SQL语句中做了修改.结果在alibaba druid 执行时报错 com.alibaba.druid.sql.parser.Parser ...

  6. Ubuntu18.04中安装vsftpd服务/ ftp上传文件提示无权限 553 Could not create file.

    1,安装 $ sudo apt-get install vsftpd 2.配置 备份并创建新的配置文件. $ sudo mv /etc/vsftpd.conf /etc/vsftpd.conf_ori ...

  7. oracle新建表空间的四条语句

    1.create user platform identified by intest; 2.create tablespace PLATFORM_DATA datafile 'c:\PLATFORM ...

  8. Linux系统调用列表(转)

    以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数.这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完 ...

  9. Linux基础命令--date

    date命令格式用法 yao@yao:~/shells/tmp$ date +%Y%m%d20190405 yao@yao:~/shells/tmp$ date +%Y%m%d%H%M%S201904 ...

  10. js隐藏字符串中间部分

    在进行web前端页面开发中,有时需要从后台获取用户数据来显示在前台页面,但是考虑到用户信息安全的问题,就需要对这些信息进行处理,使其不完全显示出来,例如姓名,两个字的显示姓,名字用*代替,电话前三位和 ...