Process: 运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位
进程ID(Process ID,PID)号码被用来标记各个进程
UID、GID、和SELinux语境决定对文件系统的存取和访问权限
通常从执行进程的用户来继承
进程控制块PCB包含信息:
进程id、用户id和组id
进程的状态(有就绪、运行、阻塞)
进程切换时需要保存和恢复的CPU寄存器的值
描述虚拟地址空间的信息
文件描述符表,包含很多指向file结构体的指针
进程可以使用的资源上限(ulimit –a命令可以查看)
输入输出状态:配置进程使用I/O设备
程序:一个在磁盘上的文件
进程: 一个正在运行的程序,例如:我打开两个记事本文件,就有两个进程了,但是程序却只有一个
进程是包含线程(thread)的,进程是资源的集合,比如:进程就相当于一家公司,线程就相当于公司里面的员工。公司一个人忙不过来了就找员工来做事了,还用原材料。还有仓库。就相当于数据
#线程 进程的运行时操作系统安排的,而不是程序员安排的
#协程相当于一个函数,由程序员来安排的,例如调用函数,是由程序员来调用的
CPU切换进程的机制,即从一个进程切换到另外的一个进程不断切换的过程。切来切去导致缓存经常失效,
所以将CPU和进程绑定在一起
#加大内存,最小化安装系统 减少上下文的切换,最小化安装Linux 减少进程之间的通信,将一个进程和CPU绑定
每颗CPU某一时间只能执行一个进程,将一颗CPU的运行时间切割为时间片,CPU执行一下A进程,停下来执行一下B进程,即每个进程都只执行一会儿,每一段的执行和切换的时间比较短
#应用程序不能直接访问硬件上的资源要通过操作系统才能和硬件打交道,操作系统管理硬件资源的分配
磁盘上分配的叫块 block
内存上分配的叫页框,有个最小的分配值,默认是4k
例如:用ps -aux 发现sshd这个进程的进程号,如何找到程序的磁盘文件
每一个进程占用的的一部分是用户空间,另外一部分是内核空间
代码段:用来存放可执行文件的操作指令,也就是说是它是可执行程序在内存中的镜像。代码段需
要防止在运行时被非法修改,所以只准许读取操作,而不允许写入(修改)操作——它是不可写的
数据段:用来存放可执行文件中已初始化全局变量,换句话说就是存放程序静态分配的变量和全局
全局变量,在内存中 bss段全部置零
堆(heap):存放数组和对象,堆是用于存放进程运行中被动态分配的内存段,它的大小并不固
定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆
上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减) #后进先出
栈:栈是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括
static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会
被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的后
进先出特点,所以栈特别方便用来保存/恢复调用现场。可以把堆栈看成一个寄存、交换临时数据
用户以自己的身份用crontab -e 创建计划任务,保存在磁盘文件/var/spool/cron/ ,文件名就是同用户名
cron任务中不建议使用%,它有特殊用途,它表示换行的特殊意义,且第一个%后的所有字符串会被将
如果在命令中要使用%,则需要用 \ 转义
注意:将%放置于单引号中是不支持的
如何实现每7分钟运行一次任务?
第一步:编写脚本,且给脚本一个执行权限
HH.tar.xz”,其中日期是前一天的时间
第一步:编写脚本给执行权限
3、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高于80%,就执行wall警
第一步:写脚本给执行权限
以下代码实现对不同名称的图像进行高斯滤波