进程的基础内容

进程

线程

通信(本机,网络)

进程的属性和概念:

进程和程序之间的区别是什么:

1进程是动态的

2程序是静态的

readelf -a 名字                读取该程序的所有内容

file a.out     查看该文件的信息

mmu 内存管理单元         是在内核里面

MMU管理内存大小        一个文件,先映射到4个G虚拟内存里面,最后存到真实内存里面。

线程是程序执行和资源管理的最小单位

进程不仅包括程序的指令和数据,而且包括程序计数器值,CPU的所有寄存器以及存储。。。。

进程号PID。

交互进程: 该类进程是由SHELL控制和运行的,交互进程既可以在前台运行,也可以在后台运行。

ps -elf 看运行状态。

CPU在某一时刻,只能运行一个进程

时间片,将CPU的运行时间切成一份一份的,每一份就是一个进程执行的时间t1,时间到,则换一个进程执行。

CPU分为内核模式和用户模式

4个G空间,3G空间为用户空间,,1G空间为内核空间。

内核执行代码权限比较高。

内核模式:特权模式,内核模式的代码可以无限制的访问所有处理器指令集以及全部内存和空间。

用户模式:访问资源受限,部分代码不可以执行。

用户模式靠系统调用,来获得权限。

man手册很重要,一定要掌握怎么用

man 2 系统调用

用户模式的代码允许发生缺页,内核模式的代码则不允许。

int 0x80 系统中断。

ps -l 只显示跟当前终端信息。

pstree 树进程

pstree -p显示进程号

大括号括起来的是线程

top 动态显示系统中的进程

renice调整正在运行的程序优先级

renice -20 PID 将优先级调高    (-20~19)只能调整这么大,稍微调整,不能无限制调整优先级

nice -20  ./a.out  调整优先级

nice -n -20 ./process/basic/a.out

按用户指定的优先级运行进程

kill -l   所有信号。   kill结束进程

SIGALRM14  闹钟信号

9,19号信号,终止进程。。18号信号SIGCONT暂停信号

17信号SIGCHLD 子进程结束的时候会发这个给父进程

jobs 查看后台运行程序  直接输入jobs

./a.out &    放后台运行

bg把已暂停的进程恢复到后台运行

fg 将后台运行的进程放到前台。

进程创建 fork()

fork() 创建一个新的进程,复制一个调用进程,这个新的进程是一个子进程,

拷贝了父进程空间,如果成功,父进程会得到子进程的ID号,并且子进程会返回0

追踪 CTRL +]

反追中 CTRL +t

getpid()获取当前进程的id, getppid()获取父进程的id。

子进程可以获取父进程ID。

fork()  .一次调用,两次返回,在父进程中返回子进程的编号,子进程中返回0

创建子进程之后,,子进程和父进程一样拥有CPU,先后运行顺序不确定。

fork()创建子进程之后,两个进程都会从FORK后面的第一条汇编代码执行

fork()执行后,执行赋值语句,然后执行判断语句。

AT定时命令。

{

at 15:34

at> ls ~/ >dev/pts/1

at> ls -l >  /dev/pts/1

at> echo"hello at" >/dev/pts/1

atq查看当前任务

atrm 34取消任务

}

crontab定时任务

{

sudo vi /etc/crontab

在这里面输入。

{周期的执行任务

怎么取消任务。。

,可以进去注释掉。

}

当创建一个进程的时候,内核里面会创建一个结构体 task_struct{}  //linux.2.6.35/include/linux.c 1100

这个结构体描述了进程的所有信息。

但子进程的代码不在这里,在4G空间里面  。进程return后 4G空间会删掉。。内核里面的结构体却不会没有释放掉。,但因为4G内存已经不存在了,所以这个结构体代表的进程就是僵尸进程。

当父进程结束的时候,子进程的僵尸进程也会释放掉。

写时复制技术。

4G虚拟内存全部映射了,,实际内存中只有改动了的数据才会拷贝。

vfork()

子进程一定先运行。进程结束后要加exit(0);

vfork()的子进程完完全全的共享父进程的物理空间。父进程创建子进程后,保证创建的子进程一定会先运行,运行结束,父进程再运行。子进程结束一定要调用_exit或者exec函数族。否则结果未知。

因为共享同一个物理空间,所以子进程修改的参数,就是父进程的参数,它俩用的是同一个参数。

时间: 2024-10-31 22:22:14

进程的基础内容的相关文章

Linux进程编程基础介绍

Linux系统是一个多进程的系统,它的进程之间具有并行性.互不干扰等特点.也就是说,每个进程都是一个独立的运行单位,拥有各自的权利和责任.其中,各个进程都运行在独立的虚拟地址空间,因此,即使一个进程发生异常,它也不会影响到系统中的其他进程. Linux进程是一个具有独立功能的程序关于某个数据集合的一次可以并发执行的运行活动,是处于活动状态的计算机程序.进程作为构成系统的基本细胞,不仅是系统内部独立运行的实体,而且是独立竞争资源的基本实体. Linux进程是一个程序的一次执行的过程,同时也是资源分

node.js基础内容

node.js node.js是建立在谷歌Chrome的JavaScript引擎(v8)的web应用程序框架. node.js 自带的运行环境可在JavaScript脚本的基础上解释和执行.这个运行是运行在浏览器以外的任何机器上执行JavaScript代码.所以也可以在服务端运行,Node.js还提供了各种丰富的JavaScript模块库,它极大简化了使用Node.js来扩展Web应用程序的研究与开发. 特性 Node.js库的异步和事件驱动的API全部都是异步就是非阻塞.它主要是指基于Node

3天学习完AngularJS基础内容小结

简介:AngularJS 是一个 JavaScript 框架.它是一个以 JavaScript 编写的库. 一.AngularJS大致功能模块 二.页面交互变得简单 1.示例:计算价格 <html> <head> <meta name="viewport" content="width=device-width" /> <meta charset="utf-8"> <script src=&q

HtmlParser学习之一:基础内容

1.相关资料 官方文档:http://htmlparser.sourceforge.net/samples.html API:http://htmlparser.sourceforge.net/javadoc/index.html 其它HTML 解释器:jsoup等.由于HtmlParser自2006年以后就再没更新,目前很多人推荐使用jsoup代替它. 2.使用HtmlPaser的关键步骤 (1)通过Parser类创建一个解释器 (2)通过Filter或者Vistor访问Html中的内容. 3

Objective-c学习笔记—— 基础内容

6.5.1 多重继承 Python也支持多种继承形式.一个能继承多个基类的类定义如下: class DerivedClassName(Base1, Base2, Base3): <statement-1> . . . <statement-N> 大多数情况,最简单而言,你可以把从父类继承下来的属性查询看成是遵循深度优先,从左到右. 而不是在同一等级重复的同样类中执行两次.因此,如果一个属性没在派生类中找到,首先会在base1然后再base1的基类中,如果在那里都没发现,就会在bas

万树IT:Android软件开发必学习的0基础内容

如今安卓系统中国的前景市场是非常广阔的,它主要针对的是移动设备市场,而如今智能手机已经占据人们生活不能缺少的一部分.所以,很多行业投入到安卓软件开发,进入到安卓开发的人才也越来越多. 安卓应用软件开发必学习的5大基础内容: 1.编程语言 2.基础应用开发 3.核心组件开发Android论坛交流 4丶安卓论坛交流学习 5.深入开发 Android软件开发必学习的0基础内容 1.编程语言的学习 安卓应用软件开发中有很多的编程语言可以使用,所以应该重点学习以下几种编程语言. ①  C/C++语言.  

css基础内容

css基础内容 CSS 指层叠样式表 (Cascading Style Sheets)样式定义如何显示 HTML 元素样式通常存储在样式表中把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题外部样式表可以极大提高工作效率外部样式表通常存储在 CSS 文件中多个样式定义可层叠为一 一.css的引入方式 1.直接在html标签元素内嵌入css样式 <div style="font-size:14px; color:#FF0000;">行内引入</div&g

进程的基础 操作系统 进程的理论

进程的基础 进程的基础 程序 ? 一堆静态的代码文件 进程 ? 一个正在运行的程序进程, 抽象的概念 ? 由操作系统操控调用交于CPU运行 被CPU运行 操作系统 操作系统的基础 ? 管理控制协调计算机中硬件与软件的关系 操作系统的作用 ? 将一些对硬件操作的复杂丑陋的接口, 变成简单美丽的接口 ? 多个进程抢占一个(CPU)资源时, 从操作系统会将你的执行变得合理有序 tip: ? 阻塞: input read write sleep recv accept sendto recvfrom 操

python学习之基础内容

python基础内容① 什么是python? -一种计算机语言,计算机语言分为 -高级语言:python.java.Ruby.C#.C++...... -基础语言:C语言.汇编 -计算机可以直接执行基础语言,但是基础语言比较复杂,敲代码很麻烦 -高级语言会自动转化为基础语言,再提供给计算机执行. 安装好python后,print("hello world") -python执行文件后缀名可以是任意的 -但是为了pycharm的执行方便,约定俗称使用“.py”后缀 python 的执行方