Virtualization
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的更多相关文章
- [WPF]WPF Data Virtualization和UI Virtualization
这篇博客将介绍WPF中的虚拟化技术. 1. Data Virtualization 通常情况下我们说数据虚拟化是指数据源没有完全加载,仅加载当前需要显示的数据呈现给用户.这种场景会让我们想到数据分页显 ...
- Geneve: Generic Network Virtualization Encapsulation
Earlier this year, VMware, Microsoft, Red Hat and Intel published an IETF draft on Generic Network V ...
- [Virtualization][SDN] VXLAN到底是什么 [转]
写在转发之前: 几个月以前,在北大机房和燕园大厦直接拉了一根光钎.两端彼此为校园内公网IP.为了方便连接彼此机房,我做个一个VPN server在燕园的边界,北大机房使用client拨回.两个物理机房 ...
- Virtualization API之libvirt
The virtualization API 之开源 libvirt探究 By Ruiy: libvirt supports Hypervisors(注,相关的hypervisors项目的权威网站已经 ...
- 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 本机不 ...
- 【转】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 ...
- Connecting Docker for Cloud Services using SDN and Network Virtualization
Abstract The explosive scale of container CPUs needs highly efficient network virtualization Chal ...
- RH133读书笔记(10)-Lab 10 Exploring Virtualization
Lab 10 Exploring Virtualization Goal: To explore the Xen virtualization environment and the creation ...
- <Mastering KVM Virtualization>:第一章 了解Linux虚拟化
本章为读者提供了Linux虚拟化中流行技术的深刻见解,以及相较于其他同类技术的优势特点.本书共有14章,囊括了KVM虚拟化中的各个方面,从KVM的内部构造开始,并包括了诸如软件定义网络(SDN),性能 ...
- <Mastering KVM Virtualization>:第三章 搭建独立的KVM虚拟化
在第二章,你了解了KVM的内部结构:在本章中,您将了解如何将Linux服务器设置为虚拟化主机.我们正在讨论将KVM用于虚拟化并将libvirt作为虚拟化管理引擎. KVM开启了虚拟化并利用你的服务器或 ...
随机推荐
- 解决Eclipse中.properties文件中文乱码问题
在.properties文件写注释时,发现中文乱码了,由于之前在idea中有见设置.properties文件的编码类型,便找了找乱码原因 在中文操作系统中,Eclipse中的Java类型文件的编码的默 ...
- 简单的新手加法运算(基于Struts2)
软件151 王帅 在搭好框架的前提下,首先编写action.java文件: import com.opensymphony.xwork2.ActionSupport; public class Us ...
- 二、linux的安装
1. 虚拟机安装: 1.1. 什么是虚拟机 虚拟机:一台虚拟的电脑. 虚拟机软件: * VmWare :收费的. * VirtualBox :免费的. 1.2. 安装VmWare 参考<虚拟软件 ...
- vscode 创建.net core项目初体验
微软的virtual studio编辑器那是宇宙第一大编辑器,可惜就是太笨重,遇到性能差一些的电脑设备,简直无法快速的编辑项目. 而vs code编辑器轻便易用,想要编辑哪种项目,只需扩展插件就OK, ...
- react系列笔记:第一记-redux
前言: 目前公司使用dva,对于前不久还是使用原生js的我来说,花了差不多一两周时间,基本掌握如何使用.虽然对于react有一点点基础,但很多地方未深入,很多概念也很模糊,故从本文开始,记录一下系统的 ...
- 几个常用内核函数(《Windows内核情景分析》)
参考:<Windows内核情景分析> 0x01 ObReferenceObjectByHandle 这个函数从句柄得到对应的内核对象,并递增其引用计数. NTSTATUS ObRefer ...
- Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array (简单DP)
题目:https://codeforces.com/contest/1155/problem/D 题意:给你n,x,一个n个数的序列,你可以选择一段区间,区间的数都乘以x,然后求出最大字段和 思路: ...
- Linux----Github环境搭建
前面介绍了在Windows环境上安转GitHub环境,原本以为打包成jar,发布到Linux不需要再安转Git,但是因为我们使用了Config-Server配置中心,远程配置来启动,所以需要在Linu ...
- css清除浮动方式总结
1.通过父元素overflow:hidden,缺点:超出部分隐藏,不推荐使用 <!DOCTYPE html> <html lang="en"> <he ...
- CentOS7突然出现无法连接网络的情况--VM下
转自:https://blog.csdn.net/xzm5708796/article/details/83757372 突然出现VM内安装的centos7系统无法通过外部进行连接1.登陆到虚拟机上查 ...