进程的基本概念 进程环境
cpu(中央处理器)上面也能存储少量的数据(最多几k字节)
cpu上存数据的组件“寄存器” ,访问速度特别快
这里的存储器指的是内存
不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。 所有设备都只能直接和内存打交道
内存:空间比较小,访问速度快,成本较高,断电之后数据丢失
外存:空间比较大,访问速度慢,成本较高,断电之后数据依然存在
速度差3-4个数量级
猴子排序是时间复杂度无穷大的排序;睡眠排序是借助sleep实现的
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
内核(进程管理,内存管理,文件管理,驱动管理)其他程序(例如函数库,shell程序等等操作系统是软件(OS)用来搞管理的软件: 要搭配驱动来
1.管理硬件设备 2.管理软件资源
描述:用struct结构体
组织: 用链表或其他高效的数据结构
描述进程 (PCB 进程控制块 —> 就是一个结构体):一个进程对应一个task_struct
task_struct 一个很大的结构体,是Linux操作系统下的PCB,包含很多内容 (是Linux中描述进程的结构体)
**PCB **(指针通用的情况 )进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合
进程的信息可以通过 /proc 系统文件夹查看
1.进程标识符PID 进程的身份标识(区分标准)
2.内存指针(进程代码和数据都在内存的哪个部分)
fork有两个返回值;父子进程代码共享,数据各自开辟空间,私有一份(采用写时拷贝)
fork的使用:
1.返回值:一次调用有两个返回值(有两个进程) 父进程返回子进程的pid 子进程返回0 一个父亲可以有多个儿子通常要让父子进程执行不同的逻辑,就可以借助fork的返回值来进行区分;
如果失败,返回<0的结果 a.内存不够 b.进程太多,达到上限了; RLIMIT_NPROC
2.执行过程:父子进程都是紧接这fork继续执行;
3.父子执行的先后顺序:取决于操作系统的调度器,不确定
ps相当于任务管理器,可以查看系统中有哪些进程
ps - 显示当前用户的进程
ps aux -操作系统的所有进程
ps aux | less 对查看结果可翻页其他操作
ps aux | grep 【进程页】查看匹配的进程
敲下的命令,在命令执行过程中,也是一个进程
可以在内核源代码里找到它。所有运行在系统里的进程都以task_struct链表的形式存在内核里。双向链表进行组织,每个节点就是一个task_struct 。
父进程先退出,子进程就称之为“孤儿进程”
孤儿进程不是一种进程的状态,指的是父进程结束后,但是子进程还在,子进程的父亲就变成了一号进程(init)。(孤儿进程被1号init进程领养)
env 查看系统上所有的环境变量
echo $(环境变量名) 查看某个环境变量
export 修改环境变量 对于PATH 修改一般只是进行追加,不会把原来的内容去掉,可以通过重启终端来恢复PATH,修改文件~/bashrc能够让环境变量持久生效
unset: 清除环境变量
set: 显示本地定义的shell变量和环境变量
环境变量通常具有全局属性,可以被子进程继承下去
用C/C++语言所看到的地址,全部都是虚拟地址,物理地址,用户一概看不到,由OS统一管理,OS必须负责将虚拟地址 转化成 物理地址 。
同一个变量,地址相同,其实是虚拟地址相同,内容不同其实是被映射到了不同的物理地址!
栈的大小是????8M?
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数,,, Linux是有文件句柄限制的。 ulimit 可以配置栈的大小
堆有多大 4G 32位系统 非常大
如果是大对象,必须在堆上分配
如果小地址,并且需要频繁创建和销毁,推荐在栈上分配 ,栈上分配更高效
堆上分配很复杂了 malloc底层实现
cpu资源分配的先后顺序,就是指进程的优先权(priority)。 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。 还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,
权限(你能做或者不能做) 优先级(能做的情况下先后执行)
ID : 代表执行者的身份
NI :代表这个进程的nice值——>进程可被执行的优先级的修正数值, 优先级变低, 优先级的修正值, PRI(old)+NI == 最终的PRI 通过top指令可以调整NI值,不过我们宏观上看不出
nice其取值范围是-20至19,一共40个级别 进入top后按“r”–>输入进程PID–>输入nice的值
进程的调度(让少量的CPU能够满足大量的进程)
并行:多个进程在多个CPU下分别,同时进行运行,这称之为并行 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为 并发(1个cpu分别执行2个进程,进程切换的方式)
CP可能有即几十寄存器 类似于游戏存档 PC指针(寄存器)
保存上下文,CP寄存器的内容保存到内存中;
恢复上下文,内存中的寄存器恢复到内存中