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

天河网站建设自己做的网站和模板

天河网站建设,自己做的网站和模板,网站建设管理招聘,泰安电视台在线直播目录 一、冯诺伊曼体系结构​编辑 关于冯诺依曼,必须强调几点: 二、操作系统 1、概念 2、操作系统的作用 3、本质 4、总结 5、系统调用和库函数概念 三、进程 1、基本概念 2、描述进程 3、task_struct 4、查看进程 5、通过系统调用获取进程…

目录

一、冯诺伊曼体系结构​编辑

关于冯诺依曼,必须强调几点:

二、操作系统

1、概念

2、操作系统的作用

3、本质

4、总结

5、系统调用和库函数概念

三、进程

1、基本概念

2、描述进程

3、task_struct

4、查看进程

5、通过系统调用获取进程标示符

6、代码创建子进程

四、进程状态

1、进程状态查看

 2、僵尸进程

3、孤儿进程


一、冯诺伊曼体系结构

 

截至目前,我们所认识的计算机,都是有一个个的硬件组件组成

输入单元:包括键盘, 鼠标,扫描仪, 写板等

中央处理器(CPU):含有运算器和控制器等

输出单元:显示器,打印机等

关于冯诺依曼,必须强调几点:

这里的存储器指的是内存

不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备) 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。

一句话,所有设备都只能直接和内存打交道。

总结:内存是体系结构中的缓存,适配外设和CPU速度不均的问题的。

二、操作系统

1、概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括: 内核(进程管理,内存管理,文件管理,驱动管理)

其他程序(例如函数库,shell程序等等)

2、操作系统的作用

与硬件交互,管理所有的软硬件资源

为用户程序(应用程序)提供一个良好的执行环境

3、本质

对数据的管理

4、总结

描述起来,用struct结构体

组织起来,用链表或其他高效的数据结构

5、系统调用和库函数概念

在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分 由操作系统提供的接口,叫做系统调用。

系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统 调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

三、进程

1、基本概念

进程=可执行程序+该进程对应的内核数据结构

2、描述进程

进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。

课本上称之为PCBprocess control block),Linux操作系统下的PCB: task_struct

3、task_struct

Linux中描述进程的结构体叫做task_struct

task_structLinux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。

4、查看进程

[sunlang3@VM-12-13-centos ~]$ ll
total 24
-rw-rw-r-- 1 sunlang3 sunlang3  827 Dec 24 10:47 install.sh
-rw-rw-r-- 1 sunlang3 sunlang3   83 Dec 24 10:51 Makefile
-rwxrwxr-x 1 sunlang3 sunlang3 8408 Dec 24 20:09 process
-rw-rw-r-- 1 sunlang3 sunlang3  530 Dec 24 20:09 process.c
[sunlang3@VM-12-13-centos ~]$ ./process
hello process
hello process
hello process
^C
[sunlang3@VM-12-13-centos ~]$ ps axj | grep 'mytest'4013  4181  4180  4013 pts/0     4180 S+    1003   0:00 grep --color=auto mytest
[sunlang3@VM-12-13-centos ~]$ ps ajx | head -1 && ps axj |grep 'mytest' |grep -v grepPPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
[sunlang3@VM-12-13-centos ~]$ 

5、通过系统调用获取进程标示符

进程id PID

父进程id PPID

[sunlang3@VM-12-13-centos ~]$ vim process1.c
[sunlang3@VM-12-13-centos ~]$ cat process1.c
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{printf("pid:%d\n",getpid());printf("ppid:%d\n",getppid());return 0;
}
[sunlang3@VM-12-13-centos ~]$ gcc -o process1 process1.c
[sunlang3@VM-12-13-centos ~]$ ./process
hello process
hello process
hello process
hello process
hello process
^C
[sunlang3@VM-12-13-centos ~]$ ./process1
pid:7457
ppid:4013

6、代码创建子进程

父进程返回子进程的pid,给子进程返回0

fork有两个返回值

父子进程代码共享,数据各自开辟空间,私有一份(采用写时拷贝)

[sunlang3@VM-12-13-centos ~]$ cat process1.c
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{int ret=fork();printf("hello proc:%d!,ret:%d\n",getpid(),ret);sleep(1);return 0;
}
[sunlang3@VM-12-13-centos ~]$ ./process1
hello proc:17676!,ret:17677
hello proc:17677!,ret:0
[sunlang3@VM-12-13-centos ~]$ cat process1.c
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{int ret=fork();if(ret<0){perror("fork");return 1;}else if(ret==0){printf("I am child:%d!,ret:%d\n",getpid(),ret);}else{printf("I am father:%d!,ret:%d\n",getpid(),ret);}sleep(1);return 0;
}
[sunlang3@VM-12-13-centos ~]$ gcc -o process1 process1.c
[sunlang3@VM-12-13-centos ~]$ ./process1
I am father:19060!,ret:19061
I am child:19061!,ret:0

子进程执行代码,计算数据,和父进程执行同样的代码,fork之后,父子进程代码共享,而数据各自独立,不同的返回值,让不同的进程执行不同的代码。

四、进程状态

操作系统下的进程状态:

运行状态:只要在运行队列中,代表已准备好,随时可以调度

终止状态:该进程还在,只不过永远不运行了,随时等待被释放

阻塞状态:进程等待某种资源(非CPU),资源没有就绪的时候,进程需要在该资源的等待队列中进行排队,此时进程的代码并没有运行,进程所处的状态就叫作阻塞

挂起状态:短期内不会被调度的进程,操作系统就会把该进程的代码和数据置换到磁盘上

Linux下的进程状态:

/*
*	The task state array is a strange "bitmap" of
*	reasons to sleep. Thus "running" is zero, and
*	you can test for combinations of others with
*	simple bit tests.
*/
static const char * const task_state_array[] = { "R (running)", /* 0 */
"S (sleeping)", /* 1 */ "D (disk sleep)", /* 2 */ "T (stopped)", /* 4 */
"t (tracing stop)", /* 8 */ "X (dead)", /* 16 */
"Z (zombie)", /* 32 */
};

R运行状态(running): 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。

S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠

(interruptible sleep))。

D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的进程通常会等待IO的结束。

T停止状态(stopped): 可以通过发送 SIGSTOP 信号给进程来停止(T)进程。这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行。

X死亡状态(dead):这个状态只是一个返回状态,你不会在任务列表里看到这个状态。

1、进程状态查看

ps aux / ps axj

 2、僵尸进程

当进程退出并且父进程没有读取到子进程退出的返回代码时就会产生僵尸进程。

危害:

如果没有人回收子进程的僵尸,该状态会一直维护,该进程的相关资源(task_struck)不会被释放。

3、孤儿进程

父进程先退出,子进程就称之为“孤儿进程”,孤儿进程被1号init进程领养,由init进程回收。

http://www.dtcms.com/wzjs/831978.html

相关文章:

  • 做网站什么公司好php网站的html文件放在那个里面的
  • 廊坊网站制作网页网站开发文件夹组织结构
  • 网站建设毕业答辩ppt微盟收费标准
  • 站内搜索本网站怎么做上海知名 网站设计公司
  • 简述网站开发平台及常用开发工具外贸销售
  • seo网站建设步骤网站搭建平台
  • 不同类型网站优势云微助力网站建设
  • 韩文网站域名备案高端网站建站公司
  • 记事本做网站素材代码上海注册公司代理电话
  • 商城类网站能做响应式设计吗淮南最近发生的新闻
  • php网站建设考试可以做网站首页的图片素材
  • 网站设计专题页越城区住房和城乡建设局网站
  • 手机友好型网站博客网站源码带后台
  • 交易类网站建设费用中原区网站建设
  • 网站建设流程白云区网络推广
  • 中国反钓鱼网站联盟济南logo设计制作
  • 如何创建网站赚钱淘宝客是如何做网站与淘宝对接的
  • 2019年的阜南县建设修路网站营口规划建设局网站
  • 四川网站营销seo什么价格网站开发需求大厅
  • 石家庄企业网站建设做网站绘制蓝图的步骤
  • 中国免费建设网站网址电商培训班学了有用吗
  • 站长检测同ip网站很多怎么办招远水利建设工程公司网站
  • 想找人做网站怎么了解网站优化设计
  • 网站ssl证书怎么做青岛seo百科
  • 企业网站作用怎么开网店做电商
  • 陕西建设机械官方网站建一个定制网站要多少钱
  • 注册网站名字简洁网站模板素材
  • 网站结构化数据自定义标签wordpress
  • 网站建设方案数一个网站有多少网页
  • 网页创建站点代运营的工作内容