当前位置: 首页 > news >正文

运河建设集团网站深圳网站建设专家

运河建设集团网站,深圳网站建设专家,如何销售网站开发,种子搜索神器在线搜目录 硬件 冯诺依曼体系结构 冯诺依曼体系结构推导 重点概念 网络数据流向 软件 操作系统(Operator System - OS) 概念 定位 进程内核数据结构PCB#xff08;task_struct#xff09; 通过系统调用创建进程-fork初始 fork基本用法 使用if进行分流 查看运行效果 …目录 硬件 冯诺依曼体系结构 冯诺依曼体系结构推导 重点概念 网络数据流向 软件 操作系统(Operator System - OS) 概念 定位 进程内核数据结构PCBtask_struct 通过系统调用创建进程-fork初始 fork基本用法 使用if进行分流 查看运行效果 硬件 冯诺依曼体系结构 我们常见的计算机如笔记本。我们不常见的计算机如服务器大部分都遵守冯诺依曼体系。因为有些硬件的设计就是为了软件有些软件的设计就是为了硬件所以我们不能够将软件和硬件割裂开来学习。软件与硬件之间是会有千丝万缕的联系的。存储器内存。输入设备键盘、摄像头、话筒、磁盘、网卡……。输出设备显示器、音响、磁盘、网卡……。CPU中央处理器 运算器算术运算、逻辑运算。控制器CPU是可以响应外部事件协调外部就绪事件比如拷贝数据到内存。 关于冯诺依曼必须强调几点这里的存储器指的是内存。不考虑缓存情况这里的CPU能且只能对内存进行读写不能访问外设(输入或输出设备)。外设(输入或输出设备)要输入或者输出数据也只能写入内存或者从内存中读取。 一句话所有设备都只能直接和内存打交道。对冯诺依曼的理解不能停留在概念上要深入到对软件数据流理解上。 冯诺依曼体系结构推导 #问为什么会有一个存储器 在我们看来 输入设备是产生数据的。输出设备是保存 / 显示数据的。那么体系结构为下图不是也可以吗 1. 存储的效率 CUP 寄存器 内存 磁盘 / SSD 光盘 磁盘。并且还是数量级的上升 2. 木桶原理木桶原理又称短板理论木桶短板管理理论 最直接的话来说一个木桶能够接多少水是由木桶的最短的木板所决定的。换而言之就是是由多个木板构成一个木桶相当于由多个元素构成一个系统同样的道理一个系统的运行速度不是由最快的元素决定的而是最慢的元素所决定。所以在计算机设计的角度来说如果以- 输入设备 - CUP - 输出设备 - 。来设计这个时候输入设备和输出设备都会大大的拖慢CPU的运行速度导致整个系统运行速度降低。更直接的来说就是CPU运行速度太快了对比起磁盘等外设的速度磁盘们慢的离谱CUP等急了 于是我们在磁盘到CPU的间隔中插入了一个内存。更直接的来说就是内存还行比磁盘快不了太多又比CPU慢不了太多CPU这个等待可以接受利用存储器的存在让我们对于速率上以软件上做文章。 通过将外设的数据预先加载到存储器当中此时CPU读取数据时就不去外设而是去存储器读取数据。即因为存储器的存在以此通过软件层的策略比如操作系统提升效率。以此达到以后的木桶短板就不是外设而是内存了。例如缓冲区满了才将数据打印到屏幕上使用fflush函数 / 显示器的行刷新策略将缓冲区当中的数据都是将内存当中的数据直接拿到输出设备当中进行显示输出。 比如开机的时候操作系统将我们可能要访问的数据预先从外设读取到内存当中。 重点概念 结论 CPU读取数据数据 代码都是要从内存中读取数据。——  站在数据的角度我们认为CPU不和外设直接交互。CPU要处理数据需要先将外设中的数据加载到内存。——  站在数据的角度外设直接只和内存打交道。所以在语言级的学习中的一局话我们就可以理解了程序在文件、磁盘中要运行必须先加载到内存中因为体系结构决定。 网络数据流向 我们利用QQ和远在其他地方上大学的朋友进行聊天并且使用的是由冯•诺依曼体系结构搭建的电脑。 我们在与朋友聊天的时候我们通过键盘输入自己想说的话于是键盘输入的信息会加载到内存而我们也需要知道我们输入的是什么所以信息还会回显屏幕上。而关键在于对方收到我们的信息所以CPU需要将我们输入的内容经过网络的包装、打包、网络IP等然后打包完的内容写回到内存当中。然后通过网卡进行网络上的数据传输然后对方通过网卡接受到我们所发出的信息由于体系结构就会将内容加载到内存当中然后CPU进行读取分析将分析完的数据写回到内存然后将内容写到显示器上。 路线 冯诺依曼体系结构能够帮助我们理解对用的日常生活中的软件行为的是硬件规定了我们的软件应该怎么做。 软件 操作系统(Operator System - OS) 概念 任何计算机系统都包含一个基本的程序集合称为操作系统(OS)。笼统的理解操作系统包括 内核进程管理内存管理文件管理驱动管理。其他程序例如函数库shell程序等等。 定位 在整个计算机软硬件架构中操作系统的定位是一款纯正的 搞管理 的软件。是为了对上提供良好的使用环境  ——  是目的对下通过管理好软硬件资源保证系统的稳定性  ——  是手段 可以说给用户提供一个稳定、安全、简单的执行环境。 进程内核数据结构PCBtask_struct 进程信息被放在一个叫做进程控制块的数据结构中可以理解为进程属性的集合。 课本上称之为PCBprocess control blockLinux操作系统下的PCB是: task_struct task_ struct内容分类 标示符描述本进程的唯一标示符用来区别其他进程。 状态任务状态退出代码退出信号等。 优先级相对于其他进程的优先级。 程序计数器程序中即将被执行的下一条指令的地址。 内存指针包括程序代码和进程相关数据的指针还有和其他进程共享的内存块的指针 上下文数据进程执行时处理器的寄存器中的数据[休学例子要加图CPU寄存器]。 IO状态信息包括显示的I/O请求,分配给进程的IO设备和被进程使用的文件列表。 记账信息可能包括处理器时间总和使用的时钟数总和时间限制记账号等。 其他信息#问为什么要存在PCBtask_struct 重点理解操作系统的作用以及操作系统如何做管理的。要管理必须要先描述再组织先描述就是面向对象对于被管理的对象先抽象成类然后再组织就是根据类来定义对象。然后将对象根据某种链入式的结构组织起来。 通过系统调用创建进程-fork初始 fork基本用法 fork之后代码是父子共享的但是如果父子多做的事情都以一样的那我们费这么劲作用不大需要的是分出来做不同的事情这样可以明显的提高效率。所以通常用法使用fork是利用父子进程执行不同的代码。 使用if进行分流 简单来说就是父子进程都能看见fork后面的代码但是只能执行自己的。 int main() {pid_t id fork(); //pid_t相当于无符号整数if(id0){//创建失败perror(fork);//打印出fork失败的原因由C语言提供return 1;}else if(id 0){//child process(task)while(1){peintf(I am child, pid %d, ppid %d\n, getpid(), getppid());sleep(1);}}else{//parent processwhile(1){peintf(I am father, pid %d, ppid %d\n, getpid(), getppid());sleep(1);}}printf(you can see me!\n);sleep(1);return 0; }利用id在父进程里面是子进程的pid在子进程里面是0。让else if与else里面的语句同时执行。主要是一个变量id是可以有不同的值。与语言本身无关仅仅就是因为使用fork创建了子进程而产生的特殊现象。不同值的原理在进程地址空间讲解 查看运行效果 用于可以直接清晰的查看进程。 ps xaj | head -1 就是打印一个表格的头标表格中数据的名称  ps axj | head -1 ps axj | grep myproc 与逻辑与相同只有左侧的执行成功才会执行右侧的要成功答应需要左侧与右侧都成功。 ps axj | head -1 ps axj | grep myproc |  grep -v grep while ;: do ps axj | head -1 ps axj | grep myproc | grep - v grep; sleep 1; done  为什么给子进程返回0给父进程返回子进程的pid此处没有官方的讲解仅仅是理解任何一个子进程永远都只有一个父进程任何一个父进程可以有一到多个子进程。父进程 : 子进程 1: n只要父进程调用fork之后就可以有子进程。而为了父子进程便于协同所以就相当于生活中父亲不可能叫自己的孩子为那个孩子吃饭了、那个孩子别乱摸……更何况还会有多个孩子。所以需要给子进程进行标识等同于fork之后给父进程返回子进程的pid以此父进程来对子进程进行相关管理。 而对于子进程永远都只有一个父进程子进程与父进程的对应关系就是相当明确的、唯一的。子进程可以很方便的找到父进程。 创建进程的时候操作系统要做什么fork为什么会有两个返回值创建子进程那么我们一定要给子进程配套一个task_struct来让操作系统来管理这个新进程。这样这个 task_struct 就可以入到系统的全局的维护进程列表的结构当中操作系统就可以对新进程进行管理了。 对于在系统层的fork实现中return时核心代码的执行状态 操作系统和CPU运行某一个进程本质从 task_struct 形成的队列中挑选一个task_struct来执行它的代码。 进程调度变成了在task_struct的队列中选择一个进程的过程。只要想到进程优先想到进程对应的task_struct。 所以当准备return的时候核心代码已经完成了。因为return是为上层返回结果。既然已经返回结果证明计算过程已经结束。 而通过此我们知道父与子进程的执行其实是有优先级的。 所以才会看到会有两个返回值。不是出了fork才有的父子进程在fork中的return的时候进程早已经创建出来了甚至子进程都可以进行调度了。 #问父子进程被创建出来哪一个进程先运行 有可能父进程刚刚将子进程创建出来父进程就因为某些原因就被放到了run_queue队列的尾部反而放到了子进程的后面这个时候就是子进程先运行了。但是也有可能系统一口气将父进程跑完了甚至将fork之后的代码也跑完了。所以这个时候哪一个先跑完是不可控的。 谁先运行不一定这个是由操作系统的调度器决定的。只有操作系统最清楚谁先调用。
http://www.eeditor.cn/news/122455/

相关文章:

  • 广州网站设计成功柚米中小型网站建设市场
  • 什么是网站开发wordpress 页面栏目
  • 阿里巴巴个人网站怎么做c 网站开发实例教学
  • 网站建设与管理的体会电子商务网站开发需求分析
  • 如何建立一个企业的网站桂林两江四湖在哪里
  • 电商网站如何做怎么给网站添加代码
  • 洞口网站开发公司网络营销软文范例500字
  • 网站tdk优化精装房软装设计公司
  • 道滘网站仿做app设计思路怎么写
  • 如何做优化网站的原创性文章wordpress调用代码怎么用
  • 网站淘客怎么做wangzhan
  • 建立网站的优势用vs2012做网站教程
  • 河间市做网站郑州网站推广哪家效果好
  • 怎么看别人网站是怎么做的网站vr的建设
  • 安装字体怎么在wordpressseo排名如何优化
  • 网站建设销售专业话术网站东莞优化建设
  • 建e网官方网站公司网站建设系统
  • 织梦cms网站模板修改如何做优化网站排名
  • 温州做网站建设多少钱网站建设的新发展
  • 网易梦幻西游手游官方网站下载品牌建设需打持久战
  • 杭州城西做网站的公司龙岩做网站的公司
  • 网站设计ai西安网站建设定制
  • 网站首页图片做多大哈尔滨的网站建设公司
  • php商城网站开发实例视频教程公司注册地址必须是商业用房吗
  • 辽阳企业网站建设费如何建立自己的网拍平台
  • 没有网站可以做app吗专业网站建设一条龙
  • 人事管理软件seo互联网营销培训
  • 枣庄建设网站做网站白云区
  • 镇江网站建设网站制作公司网络营销swot分析
  • 朝阳网站建设开发百度网站建设优化