程序和进程
程序就是一个编译好的二进制文件,在磁盘上,不占用任何的系统资源
进程是一个抽象的概念,和操作系统原理联系紧密,进程就是活跃的程序
占用系用资源就是在内存中执行程序,一个运行起来的程序就是一个进程
并发:就是同时执行
单道程序设计模式:就是一个一个任务排队进行
多道程序设计模式:虽然是一个一个进行,但是通过时钟中断,就是每个程序
占用一段时间的cpu,并不是一直占用直到程序结束,看起来就是多个程序都是同时在执行
pcb进程描述符
其实就是一个结构块
进程id
进程状态:就绪,运行,停止,挂起(就是等待其他状态)
进程切换需要保存和恢复的一些cpu寄存器的值
虚拟地址相关的信息
描述终端的信息
当前工作的目录
umask掩码
文件描述符表
信号的相关信息
用户id和组id
会话和进程组
进程可以使用的资源的上限
环境变量:
就是在操作系统中用来指定操作系统运行的参数
不同的参数就是不同的操作系统环境信息
1是一个字符串
2有同一格式
3用来描述进程的环境信息
PATH 这环境变量就是记录可执行文件的路径
输入一个date命令
系统是怎么显示当前的系统时间
实际上是shell解释器去搜索了一个同名为date的函数
实际上是date函数的执行结果返回到显示界面
另外一种方式就是/bin/date
这个就是直接执行这个date函数
但是shell怎么知道这个函数在哪里?
这个就是靠的PATH这环境变量
这边变量就是存储一些路径
是通过挨个搜寻这些目录
都是从
echo $PATH
/home/calmcar/anaconda2/bin:/home/calmcar/bin:/home/calmcar/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
SHELL:当前命令解析器是什么
echo $SHELL
/bin/bash
HOME:记录当前的家目录是什么
echo $HOME
/home/calmcar
echo $LANG:记录是什么字符
进程间通讯(IPC)
两个进程间进行
管道:实际是文件的一个缓存区
默认大小是4kb,借助队列的形式
一个从管道写,一个写
缺点:
管道不能自己读写,只能是一个进程写,一个进程读
另外就是数据一旦读取走了,就不存在了
另外管道采用的是半双工通讯方式。数据只能在一个方向流动
只能在公共的祖先的进程间通讯
pipe
管道的一般读写行为
信号
共享内存
本地套接字:稳定性好
信号
概念:
基本属性:
常用信号要素:
怎么产生信号:
按键产生信号:ctrl+c
内核接受到产生的信号
马上递达,但是可能信号被阻塞或者是被屏蔽了
系统调用产生:kill 通过调用相应的函数
软件条件产生:定时器
硬件异常:就是非法访问内存等等直接产生的
命令产生:kill命令
信号的捕捉:
linux操作系统
就是一个多用户,多任务的操作系统