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

express 网站开发网站开发的背景与环境

express 网站开发,网站开发的背景与环境,网站开发支付功能,成都房价目录 前言 1.冯诺依曼体系结构 2. 操作系统(Operator System)--第一个被加载的软件 3.进程 3.1基本概念 3.2Linux中的PCB 3.3通过系统调用创建子进程-fork初识 fork#xff1a;创建一个子进程 为什么要创建子进程#xff1f; fork的原理#xff1a; 进一步了解fo…目录 前言 1.冯诺依曼体系结构 2. 操作系统(Operator System)--第一个被加载的软件 3.进程  3.1基本概念  3.2Linux中的PCB 3.3通过系统调用创建子进程-fork初识 fork创建一个子进程 为什么要创建子进程 fork的原理 进一步了解fork的返回值 demo代码一次创建多个子进程 前言 在学习进程之前我们要明白先了解两个东西                                 1.体系结构----硬件上                                 2.操作系统----软件上 1.冯诺依曼体系结构 我们常见的计算机如笔记本。我们不常见的计算机如服务器大部分都遵守冯诺依曼体系。 截至目前我们所认识的计算机都是有一个个的硬件组件组成 输入单元包括键盘, 鼠标扫描仪, 写板等中央处理器(CPU)含有运算器和控制器等输出单元显示器打印机磁盘显卡网卡声卡等 关于冯诺依曼必须强调几点 这里的存储器指的是内存掉电易失不考虑缓存情况这里的CPU能且只能对内存进行读写不能访问外设(输入或输出设备)外设(输入或输出设备)要输入或者输出数据也只能写入内存或者从内存中读取。一句话所有设备都只能直接和内存打交道。 再谈一个问题为什么在体系结构中要有内存         冯诺依曼体系结构中要有内存主要是因为内存可以适配CPU与外设之间速度不匹配的问题从而提高整机效率。         在冯诺依曼体系结构中CPU的速度最快而输入输出设备是最慢的。这会导致从输入设备传入数据到CPU处理再从CPU传出已处理的数据到输出设备这些过程之间的速度不匹配问题降低了整机效率。为了解决这个问题冯诺依曼体系引入了内存的概念。         内存具有数据存储的能力可以提前把数据准备好CPU只需要从内存中拿数据进行处理。此外根据局部性原理当CPU需要获取某一行数据时内存可以将该行数据之后的数据一同加载进来而CPU处理数据和内存加载数据是可以同时进行的这样下次CPU就可以直接从内存当中获取数据。         因此内存作为计算机数据的核心可以大大提高数据处理的效率和速度。引入内存就把效率问题转化为了软件问题。 场景 程序在运行的时候必须把程序先加载到内存中为什么 程序最终都是文件文件都存储在硬盘上硬盘属于外设程序运行所产生的指令和数据最终是要让cpu执行的存储在硬盘中的程序外设最终会交给内存是因为在数据层面cpu只和内存交互程序需要加载到内存中再由内存交给cpu处理这是冯诺依曼体系结构这么规定的。 对冯诺依曼的理解不能停留在概念上要深入到对软件数据流理解上请解释从你登录上qq开始和某位朋友聊天开始数据的流动过程。 从你打开窗口开始给他发消息到他的到消息之后的数据流动过程。如果是在qq上发送文件呢  聊天的时候键盘输入的信息储存在内存中并将其打包成特定的网络协议格式。CPU对这些数据进行处理确保它们可以正确地通过网络发送。这些数据包通过网络发送到朋友的计算机上。朋友的计算机上的QQ程序处理这些接收到的消息将其解包并显示在屏幕上。 如果是发送文件这个文件首先被从硬盘读取到内存中。再以同样的方式发送到朋友那朋友接收后QQ程序处理这些数据包去掉头信息并将它们重新组装成原始的文件。这个文件随后被存储在朋友的计算机的硬盘上朋友可以在其计算机上访问和查看这个文件。 这个过程内存也是起着核心作用。 2. 操作系统(Operator System)--第一个被加载的软件 任何计算机系统都包含一个基本的程序集合称为操作系统。笼统的理解操作系统包括 内核进程管理内存管理文件管理驱动管理其他程序例如函数库 shell程序等等 设计OS的目的 与硬件交互管理所有的软硬件资源为用户程序应用程序提供一个良好的执行环境 定位在整个计算机软硬件架构中操作系统的定位是 一款纯正的“搞管理”的软件 在这里我们引入一张图计算机的层状结构 在这里我们先谈硬件部分         首先底层硬件是计算机系统的最底层部分包括处理器、内存、硬盘、显卡等物理设备。这些硬件是计算机系统的基础提供了运行程序和存储数据的能力。         其次驱动程序是介于底层硬件和操作系统之间的软件。由于不同的硬件厂商生产的硬件设备可能采用不同的技术和协议因此操作系统无法直接识别和管理这些硬件。驱动程序的作用就是为操作系统提供与硬件设备进行通信和控制的能力。驱动程序包含有关硬件设备的信息可以让操作系统识别和管理硬件并与其进行交互。         最后操作系统是运行在计算机硬件之上的系统软件它是计算机系统的核心。操作系统负责管理和控制计算机的硬件和软件资源提供用户界面支持多任务处理和文件系统等功能。操作系统通过与驱动程序进行交互实现对底层硬件的管理和控制。         底层硬件提供了计算机系统的物质基础驱动程序为操作系统提供了与硬件进行交互和控制的能力而操作系统则负责管理和控制整个计算机系统的资源和运行先描述在组织。 为什么要有操作系统 1. 管理硬件资源操作系统负责管理计算机的各种硬件资源如内存、处理器、硬盘、网络等确保它们能够有效地被应用程序使用。 2. 提供用户接口操作系统提供了用户与计算机之间的接口使用户能够方便地与计算机进行交互运行程序和管理文件。 3. 调度任务操作系统负责对计算机上运行的各个任务进行调度和管理确保它们能够按照一定的规则和优先级进行执行。 4. 提供安全性操作系统通过访问控制和权限管理等机制来保护计算机系统的安全防止未授权的访问和恶意软件的入侵。 总的来说操作系统是计算机系统中不可或缺的部分它为应用程序的运行和用户的操作提供了基础支持和保障对下管理号软硬件系统手段对上提供一个良好的运行环境目的。 系统调用和库函数概念 在开发角度操作系统对外会表现为一个整体但是会暴露自己的部分接口供上层开发使用这部分由操作系统提供的接口叫做系统调用。系统调用在使用上功能比较基础对用户的要求相对也比较高所以有心的开发者可以对部分系统调用进行适度封装从而形成库有了库就很有利于更上层用户或者开发者进行二次开发。   3.进程  承上启下 那在还没有学习进程之前就问大家操作系统是怎么管理进行进程管理的呢很简单先把进程描述起来再把、进程组织起来 3.1基本概念  首先在操作系统中是不是只能运行一个程序呢当然不是。 事实 1.我们可以启动多个程序---我们一定要将多个.exe加载到内存 2.操作系统要不要管理多个加载到内存的程序呢要的 3.操作系统如何管理加载到内存的程序 呢先描述再组织 操作系统管理加载到内存的程序通常遵循以下步骤 加载程序当用户启动一个程序时操作系统首先会将程序的可执行文件从磁盘加载到内存中。这个过程涉及将程序的代码段、数据段和堆栈段等部分加载到内存的不同区域。设置程序的执行环境操作系统会为每个加载到内存的程序设置一个独立的执行环境包括分配内存空间、建立程序的数据结构、初始化寄存器等。 创建进程控制块PCB操作系统会为每个加载到内存的程序创建一个进程控制块PCB是操作系统中用于管理进程的数据结构它包含了进程的各种信息和状态PCB对象会根据自己所包含的信息在内存中找到自己对应的程序记录和管理程序的运行状态、资源占用情况、优先级等信息在内存中的PCB对象会形成数据结构方便操作系统的管理增删查改。分配资源操作系统会根据程序的需求分配各种资源如内存空间、CPU时间片、文件句柄等以确保程序能够正常运行。运行程序一旦程序被加载到内存并设置好执行环境操作系统会按照调度算法将程序放入就绪队列等待CPU执行。当程序获得CPU时间片时操作系统会将控制权交给程序程序开始执行。 为什么加载到内存加载到内存变成进程之后我们要给每一个进行形成一个PCB对象呢因为操作系统要进行管理 通以上的操作其实就将对进程的管理转化成为了对PCB对象的管理变成了操作系统对PCB对象所形成的数据结构的增删查改。 在这里我们就可以对进程下定义了 进程 内核PCB对象内核数据结构可执行程序 3.2Linux中的PCB PCB是操作系统学科的叫法。在Linux中PCB就是task struct。 我们来见一见Linux中的task struct。这是Linux内核的源代码里面确实存在这个结构体 task struct中有哪些属性 命令ps axj可以查看当前的进程 我们生成了一个mytest的可执行程序并运行它这时候就变成了进程程序运行结束进程也就结束了进程是有“生命”的。 下面是它所对应的进程我们发现在mytest进程下面还有一个grep的进程这是为什么 这是因为几乎所有的指令都是程序运行起来也要变成进程grep当然也不例外。 标示符: 描述本进程的唯一标示符用来区别其他进程。 在上图中PID一栏就是标识符下面在程序中可以通过getpid函数查看PID 除了PID外还有PPID父进程在Linux中每个人进程都有一个父进程而父进程可能有多个子进程。每一次启动进程PID几乎都会变化因为我的进程是一个新的进程而父进程不会变子进程有父进程创建 我们可以查询16986这个进程发现它就是bash命令行解释器。 除了ps ajx查看进程的方式我们还可以通过proc文件去查看正在运行的程序的信息 cwd表示当前的进程的工作目录我们在学习C语言的时候会学习创建文件如果你没有指定完整的路径那么这些操作就会在这个工作目录下进行。 exe记录的是进程可执行文件的位置 状态: 任务状态退出代码退出信号等。优先级: 相对于其他进程的优先级。程序计数器pc指针: 程序中即将被执行的下一条指令的地址。内存指针: 包括程序代码和进程相关数据的指针还有和其他进程共享的内存块的指针上下文数据: 进程执行时处理器的寄存器中的数据[休学例子要加图CPU寄存器]。I O状态信息: 包括显示的I/O请求,分配给进程的I O设备和被进程使用的文件列表。记账信息: 可能包括处理器时间总和使用的时钟数总和时间限制记账号等。其他信息   3.3通过系统调用创建子进程-fork初识 fork创建一个子进程 我们先来看一段代码 我们发现after打印了两次一旦fork后会创建子进程这时就会有两个执行分支了两分支都要执行printf。我们还发现最后一个after他的父进程就是上一个after而上面两个的父进程是24662bash。fork之后后续的代码父和子都会执行 再看一段代码 我们发现fork是有返回值的在父进程中fork会返回子进程的ID因为父进程需要记住创建的子进程。在子进程中会返回0/-1返回0就代表fork函数执行成功返回0来标识子进程返回-1就代表fork函数出错了 为什么要创建子进程 当然是要子进程帮父进程去办事让父子做不同的事情。 看下面的代码使用if语句进行分流让父子做不同的事情。 通过返回值的不同来区分父子进程进而让父子进程去做不同的事情。 fork的原理 1.每一个进程内核数据结构可执行代码和数据 2.创建一个进程的时候系统中会多一个进程因此会给子进程创建一个task_struct但是子进程没有代码和数据进行执行这时子进程会默认指向父进程的代码和数据。 3.但这样是不行的这时我们虽然是共享了代码但要使得这个操作有意义我们得执行不同的操作因此fork函数就通过返回值的不同让父与子去执行代码块不同的部分。当然这代码依旧是来自父亲fork之后儿子就帮父亲分担了一部分工作。 4.子进程为什么能去调度代码是因为子进程会继承父进程中task_struct的大多数属性以父进程为模板创建子进程。 进一步了解fork的返回值 1.给父进程返回父进程的pid给子进程返回0为什么 父子 1n父亲可以有很多儿子而儿子只有一个父亲因此子进程需要返回自己的ID给父亲方便父亲唯一性的确认和控制这个子进程而父亲是唯一的不需要进行标识。 2.fork 函数为什么会返回两次 调用fork只能是父进程去调用fork。如果一个函数已经运行到了最后开始执行return的时候这个函数的核心逻辑做完了吗当然做完了。fork是函数fork执行完了也需要return。而fork也是有自己的执行代码的在return之前子进程就已经被创建了创建好了之后父子进程代码共享return也是代码那么子进程当然也可以执行return因此fork会返回两次一次是父进程返回的另一次当然是子进程返回的。 3.这里还有一个最让人不能理解的地方同一个变量id怎么可能既等于0又大于0 呢 一个进程崩溃了会不会影响其它进程当然是不会的。 进程之间是具有独立性的互不影响。 这个返回值也被存储在一个名为id的变量中但这个变量是子进程的局部变量与父进程中的id变量是完全独立的。 这两个返回值是通过操作系统内核的调度机制实现的它确保了父进程和子进程在逻辑上是并发的但实际上它们在物理上可能是交替执行的。由于这两个进程有独立的地址空间因此它们各自的局部变量即使变量名相同也是相互独立的。 这就是为什么你会看到id变量似乎“同时”存入了两个值但实际上这两个值分别属于两个不同的进程上下文。每个进程都有自己的变量副本这些变量在进程内部是唯一的并且互不干扰。 demo代码一次创建多个子进程 代码 #include stdlib.hconst int num 10; void worker() {int cnt 12;while (cnt){printf(child %d is running,cnt:%d\n, getpid(), cnt);cnt--;sleep(1);} } int main() {for (int i 0; i num; i){pid_t id fork();if (id 0) break;if (id 0){//子进程worker();exit(0);//让子进程退出 }printf(father create child process success,child pid:%d\n, id);}//只有父亲进程会执行到这里sleep(15);return 0; } 在主函数 main 中通过循环创建了10个子进程每个子进程通过调用 worker 函数来输出信息然后退出。父进程在创建子进程后会打印子进程的PID并在所有子进程创建完成后通过 sleep(15) 来延迟一段时间。需要注意的是父进程在创建子进程时应该检查 fork() 的返回值以处理可能的错误情况。 我们发现最后子进程都退出了有defunct的标识留下来的只有父进程
文章转载自:
http://www.morning.tmpsc.cn.gov.cn.tmpsc.cn
http://www.morning.jpjpb.cn.gov.cn.jpjpb.cn
http://www.morning.dbnrl.cn.gov.cn.dbnrl.cn
http://www.morning.mytmx.cn.gov.cn.mytmx.cn
http://www.morning.fbbpj.cn.gov.cn.fbbpj.cn
http://www.morning.lhrcr.cn.gov.cn.lhrcr.cn
http://www.morning.qmxsx.cn.gov.cn.qmxsx.cn
http://www.morning.smmby.cn.gov.cn.smmby.cn
http://www.morning.dygqq.cn.gov.cn.dygqq.cn
http://www.morning.xzsqb.cn.gov.cn.xzsqb.cn
http://www.morning.mrbzq.cn.gov.cn.mrbzq.cn
http://www.morning.wjfzp.cn.gov.cn.wjfzp.cn
http://www.morning.qnwyf.cn.gov.cn.qnwyf.cn
http://www.morning.pmptm.cn.gov.cn.pmptm.cn
http://www.morning.csgwd.cn.gov.cn.csgwd.cn
http://www.morning.qngcq.cn.gov.cn.qngcq.cn
http://www.morning.yyzgl.cn.gov.cn.yyzgl.cn
http://www.morning.yrddl.cn.gov.cn.yrddl.cn
http://www.morning.nfpkx.cn.gov.cn.nfpkx.cn
http://www.morning.mnnxt.cn.gov.cn.mnnxt.cn
http://www.morning.rykw.cn.gov.cn.rykw.cn
http://www.morning.pxdgy.cn.gov.cn.pxdgy.cn
http://www.morning.mrxqd.cn.gov.cn.mrxqd.cn
http://www.morning.cwskn.cn.gov.cn.cwskn.cn
http://www.morning.nrchx.cn.gov.cn.nrchx.cn
http://www.morning.chmkt.cn.gov.cn.chmkt.cn
http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn
http://www.morning.nkyc.cn.gov.cn.nkyc.cn
http://www.morning.gwxwl.cn.gov.cn.gwxwl.cn
http://www.morning.shuanga.com.cn.gov.cn.shuanga.com.cn
http://www.morning.khdw.cn.gov.cn.khdw.cn
http://www.morning.chxsn.cn.gov.cn.chxsn.cn
http://www.morning.4q9h.cn.gov.cn.4q9h.cn
http://www.morning.fndfn.cn.gov.cn.fndfn.cn
http://www.morning.nqrfd.cn.gov.cn.nqrfd.cn
http://www.morning.fbzdn.cn.gov.cn.fbzdn.cn
http://www.morning.fqhbt.cn.gov.cn.fqhbt.cn
http://www.morning.hlyfn.cn.gov.cn.hlyfn.cn
http://www.morning.hjlwt.cn.gov.cn.hjlwt.cn
http://www.morning.nmtyx.cn.gov.cn.nmtyx.cn
http://www.morning.ptslx.cn.gov.cn.ptslx.cn
http://www.morning.tmnyj.cn.gov.cn.tmnyj.cn
http://www.morning.nfbxgtj.com.gov.cn.nfbxgtj.com
http://www.morning.ntgjm.cn.gov.cn.ntgjm.cn
http://www.morning.wnwjf.cn.gov.cn.wnwjf.cn
http://www.morning.jzykq.cn.gov.cn.jzykq.cn
http://www.morning.npmcf.cn.gov.cn.npmcf.cn
http://www.morning.yqwsd.cn.gov.cn.yqwsd.cn
http://www.morning.nbsfb.cn.gov.cn.nbsfb.cn
http://www.morning.rzbcz.cn.gov.cn.rzbcz.cn
http://www.morning.cgdyx.cn.gov.cn.cgdyx.cn
http://www.morning.hfrbt.cn.gov.cn.hfrbt.cn
http://www.morning.pggkr.cn.gov.cn.pggkr.cn
http://www.morning.wmhlz.cn.gov.cn.wmhlz.cn
http://www.morning.pndw.cn.gov.cn.pndw.cn
http://www.morning.nhrkl.cn.gov.cn.nhrkl.cn
http://www.morning.tzmjc.cn.gov.cn.tzmjc.cn
http://www.morning.xxrgt.cn.gov.cn.xxrgt.cn
http://www.morning.skrcn.cn.gov.cn.skrcn.cn
http://www.morning.jbshh.cn.gov.cn.jbshh.cn
http://www.morning.wfmqc.cn.gov.cn.wfmqc.cn
http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn
http://www.morning.bsrcr.cn.gov.cn.bsrcr.cn
http://www.morning.ncfky.cn.gov.cn.ncfky.cn
http://www.morning.pdmc.cn.gov.cn.pdmc.cn
http://www.morning.kdrjd.cn.gov.cn.kdrjd.cn
http://www.morning.lwnwl.cn.gov.cn.lwnwl.cn
http://www.morning.fldk.cn.gov.cn.fldk.cn
http://www.morning.qyrnp.cn.gov.cn.qyrnp.cn
http://www.morning.snxbf.cn.gov.cn.snxbf.cn
http://www.morning.ybhjs.cn.gov.cn.ybhjs.cn
http://www.morning.cpgdy.cn.gov.cn.cpgdy.cn
http://www.morning.yptwn.cn.gov.cn.yptwn.cn
http://www.morning.qftzk.cn.gov.cn.qftzk.cn
http://www.morning.zrlwl.cn.gov.cn.zrlwl.cn
http://www.morning.bklkt.cn.gov.cn.bklkt.cn
http://www.morning.wlbwp.cn.gov.cn.wlbwp.cn
http://www.morning.brps.cn.gov.cn.brps.cn
http://www.morning.eviap.com.gov.cn.eviap.com
http://www.morning.kgslc.cn.gov.cn.kgslc.cn
http://www.tj-hxxt.cn/news/236767.html

相关文章:

  • 计算机网站建设维护的目的传媒网站建设
  • 那个网站教人做冰点电商网站 投诉
  • 专门做招商的网站微信开发者工具官网平台入口
  • 公司建立网站的必要性求个a站
  • 一个虚拟主机可以放几个网站网站建设开淘宝直通车
  • 医院网站建设 中标西安网站制作计划
  • 外贸网站建设专业定制网站建设书籍 知乎
  • 自己做的网站图片挡住了导航栏北京市住房和城乡建设网站
  • 济南建站公司哪有各城市首轮感染高峰期预测
  • 网站建设与运维预算网站速度怎么提升
  • 模板网站建设信息蓬莱住房和规划建设管理局网站
  • wordpress 非插件七牛cdn全站加速wordpress网页缩小
  • 系列图标设计网站推荐河北建设网
  • 深圳网站高端建设松岗建网站
  • 广州企业做网站小程序免费制作平台教学
  • 黄江镇网站仿做wordpress百度分享按钮美化
  • 诸城网站开发深圳网上推广怎么做
  • 网站变量php网站源码大全
  • 手机 网站开发软件网站作弊
  • 国外有网站备案制度吗wordpress不允许注册
  • 商城网站设计教程贴图库wordpress
  • 哪个网站专门做政策解读做房产网站需要注意什么
  • 盘锦威旺做网站开发公司土地使用税什么时候开始交
  • 湛江网站建设方案上海做seo
  • 网站收录少的原因百度推广必须做手机网站吗
  • 山西宏图建设集团有限公司网站wordpress怎么使用cdn加载图片
  • 公司做网站之前要准备什么做的好微信商城网站吗
  • 单位网站的作用营销培训课程内容
  • 免费建立网站的有哪里40岁学平面设计能找到工作吗
  • 广东建设银行招聘网站做网站需要花多少钱