征婚网站开发WordPress手机不显示
web/
2025/10/8 12:14:52/
文章来源:
征婚网站开发,WordPress手机不显示,品牌设计模板,深圳西丽网站建设1 操作系统 概念#xff1a;任何计算机系统都包含一个基本的程序集合#xff0c;称为操作系统(OS)。笼统的理解#xff0c;操作系统包括 内核#xff08;进程管理#xff0c;内存管理#xff0c;文件管理#xff0c;驱动管理#xff09; 其他程序#xff08;例…1 操作系统 概念任何计算机系统都包含一个基本的程序集合称为操作系统(OS)。笼统的理解操作系统包括 内核进程管理内存管理文件管理驱动管理 其他程序例如函数库shell程序等等 1.1 管理概念 在计算机开启后第一个被加载的软件就是操作系统。根据上图可以看出操作系统与底层硬件之间还有着各种驱动操作系统对驱动做管理驱动再对底层硬件做管理(不包括特殊情况)。 首先我们要谈的第一个问题就是管理操作系统是如何管理下层的软硬件呢? 我们类比校园中的校长和学生的关系来解释操作系统和底层硬件的关系。 校长在管理偌大的学校的时候并不会和每一个学生见面也并不会深入的了解到每一个学生那么学生中的张三李四 ... .... 挂科太多被校长开除了这是为什么呢因为校长拿到了他们各科成绩的数据在这种情况下校长就属于管理者张三李四 ... ....属于被管理者。 此时我们能得出第一条信息就是管理者和被管理者并不需要见面。管理者的核心工作是做决策做决策是根据数据来做。 那么校长又是如何拿到数据的通过辅导员拿到数据。在开学的第一天你就要填写各种表上交你的信息。 面对这些庞大的数据校长通过辅导员收集上来的表来获取每个学生的信息表格中的每一项属性都是学生说具有的只是每个学生的数值是不一样的。 学校中的学生成千上万校长的工作也从管理学生变成管理学生的信息。 此时校长恰好是程序员出身用学生的属性定义为一个结构体然后每个结构体里面都有一个指针指向下一个结构体。校长需要c语言成绩最好的谁跑步最快的谁挂科最多都可以在这张链表中查当有田径会校长通过查链表就知道派谁去当考试完成后校长通过查链表就知道该让谁滚蛋(滚蛋后校长就把该同学的节点删除)这样通过管理数据管理链表就能实现对学生的管理。校长的工作也就变成对链表的增删查改 从上面的分析我们可以得出。管理者是根据数据做决策管理者拿到数据通过次级管理者管理者对人的管理转化成对数据管理。 我们不妨可以将操作系统看作校长驱动程序看做辅导员底层硬件看作学生。操作系统对底层硬件的管理就变成对底层硬件的数据做管理数据通过驱动程序得到。我们将所有硬件所具有的所有属性定义成为一个结构体然后每个硬件所具有的独特的属性在他的节点内进行描述最后通过指针链接形成链表(简单理解为链表)最后将链表给到操作系统 以上操作系统的管理行为成为先描述在组织 1.2为什么要有操作系统 设计OS的目的 与硬件交互管理所有的软硬件资源(对下) 为用户程序应用程序提供一个良好的执行环境(对上) 良好是指的稳定、安全、高效的。 当我们再来看这张图的时候就会发现从最顶端的用户开始的箭头依次向下。那么能直接访问操作系统或者程序驱动或者底层硬件吗 不能每个用户都是一个独立的个体如果任由他们任意的访问操作系统内部那么其他的用户数据的安全性如何保障 并不是所有的用户和开发者都能够正确的访问驱动和底层硬件的(这些硬件也只有生产该硬件的厂商知道怎么用最好的方式去访问)所以用户和开发者访问就有了一定的成本。操作系统的出现统一了驱动的管理形式。降低了开发者的使用成本使开发变得更加高效。同时也能使计算机变得更加稳定。 对于用户来说操作系统也为其准备了系统调用接口在系统调用之上也有库函数、shell外壳之类的。更加便捷了用户的访问。 2 进程 概念 我们先给出概念进程 内核数据结构 可执行程序。 或者说 进程 内核PCB对象 可执行程序。 进程信息被放在一个叫做进程控制块的数据结构中可以理解为进程属性(结构体)的集合。 课本上称之为PCBprocess control blockLinux操作系统下的PCB是: task_struct。 task_struct-PCB的一种 在Linux中描述进程的结构体叫做task_struct。 task_struct是Linux内核的一种数据结构它会被装载到RAM(内存)里并且包含着进程的信息。 存在着这样的一个事实我们可以同时打开qq微信王者荣耀。这些程序都在运行着根据冯诺依曼体系结构程序需要先被加载到内存上然后才能被cpu所运行。那么操作系统需不需要管理可执行程序呢可能是需要的操作系统是怎么管理呢根据我们以上所得出来的结论是先描述再组织的 那么为什么可执行程序加载到内存后变成进程我们要给每一个进程形成一个PCB对象呢?
因为操作系统需要管理。 从上面的结构体可以简单的看出PCB是怎么对进程描述以及组织的。 如果把头节点给到cpu那么进程就可以跑就起来了。 这个标识符就是pid 那么我们怎么在Linux下看到pid呢。
通过下面两个指令 写一段死循环 写出来的死循环效果如下 每个进程的创建都有对应的pid 那么我们该如何看到pid呢 指令 while :; do ps ajx | head -1 ps ajx | grep myprocess | grep -v grep; sleep 1 ;done 这一串指令就可以查看到当前运行程序的PID了
那么如何证明这个pid 就是当前进程的pid呢
修改代码 #includestdio.h2 #includeunistd.h3 #includesys/types.h4 int main()5 {6 7 pid_t id getpid();8 pid_t fid getppid();9 10 11 while(1)12 {13 sleep(1);14 printf(i am a process,ppid:%d,pid:%d\n,fid,id); 15 }16 return 0 ;17 }
由此我们可以发现这就是进程中的标示符也就是我们要找的pid
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89048.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!