linux进程和软件安装---宋轶聪

来源:互联网 发布:学生空间七天网络下载 编辑:程序博客网 时间:2024/06/06 10:37

单任务单用户和多任务多用户

单处理器系统中,程序有两种运行方式:单道程序顺序执行(单任务单用户)和多道程序并发运行(多用户多任务).

单道程序顺序执行:要执行的多个程序按一定次序依次执行,一个程序运行完毕才能运行下一个程序,既在一个程序运行期间不插入运行其他程序.这种运行方式的优点是实现简单,不需要在多个进程之间进行转换;缺点是资源利用率低,因为在系统运行的郑国过程中,始终是一道程序独占系统全部资源,一般一道程序不会同时进行计算和输入输出操作,这使得处理器和设备串行工作,在处理器忙时,设备空闲,在设备忙时处理器空闲,并且这样的系统无法提供多用户同时联机使用方式.

多道程序并发执行:在内存中同时存放多道程序,按一定策略调度多道程序交叉运行,形成"微观上串行,宏观上并行"的情况,使得处理器和设备可以并行工作,当某个进程输入输出操作时,可以同时有另一个进程在处理器上进行计算.从直观上看这种方式肯定比单道程序执行方式的资源利用率高.

在多任务多用户的系统中,多个进程交替运行,这样进程在其生存期内肯定有多种状态,至少有运行和不运行两种状态,进程的状态数量是操作系统按照一定的管理策略设置的,进程状态转换时操作系统实施进行管理的一个基本操作.操作系统使用模块提供的功能来管理进程的状态切换.

1.认识进程

linux在执行每一个程序时,就会在内存中为这个程序建立一个进程,以便让内核可以管理这个运行中的进程.内核会记录这个程序执行期间分配的内存空间以及使用过的资源,所以linux在内核中为每一个执行中的程序建立一个资料库,记录该程序执行过程中都开启了哪些文件,使用了哪些资源,等等信息.这个资料就是进程.进程就是linux系统中用来记录执行过程中程序各种信息的资料.

进程是系统分配各种资源,进程调度的基本单位.

进程的活动是通过在CPU上执行一系列程序和对应数据进行操作来体现的,因此程序和它的操作数据是进程存在的实体,但这两者仅是静态的文本,没有反应出动态性,为此,还需要一个数据结构来描述进程当前的状态、本身的特性等,这种数据结构称为进程控制块PCB(Process Control Block),简称进程控制块.

2.进程的组成: *服务为常驻内存形

进程分为三部分:1.程序部分. 2.数据集合(如ldd /bin/ls 查看ls调用的库). 3.PCB

进程的程序部分描述进程所要完成的功能,而数据结构集是执行时不可少的工作区和操作对象,这两部分是进程完成所需功能的物质基础.由于这两部分内容与控制进程的执行及完成进程功能直接相关,因而,在大部分多道系统系统中,这两部分内容放在内存中,直到该进程执行时再调入内存.所以进程实体通常由程序,数据集合和PCB三部分组成,也成为进程映像.

PCB(Process Control Block),简称进程控制块.

包含一个进程的描述信息,控制信息和资源信息.有些系统中还有进程调度等待所使用的现场保护区.PCB集中反映一个进程的动态特性.

在创建进程时,就为它创建PCB,然后根据PCB中的信息对进程实施有效的管理和控制.当一个进程完成其功能后,系统释放PCB,进程也随之消亡.所以,PCB是进程存在的唯一标志。

PCB又分为四部分

  1.进程标示符

用于唯一地标识一个进程,一个进程通常有以下两种标示符.

1) 进程内部标示符.在所有操作系统中,为每一个进程赋予一个唯一的数字标识符

   它通常是一个进程的序号,设置内部标示符主要是为了方便系统使用.

2) 进程外部标示符.它由创建者提供,通常是由字母、数字组成,往往由用户(进程)在访问该进程时

   使用。为了描述进程的家族关系,还应设置父进程标识及子进程标识。

  2.处理器状态

处理器状态信息主要由处理器的各种寄存器中的内容组成。处理器在运行时,许多信息放在寄存器中

当处理器被中断时,这些信息都必须保存在PCB中,以便在该进程重新执行时能从断点继续执行。

  3.进程调度信息

1) 进程状态。指明进程当前的状态,座位进程调度和对换的依据

2) 进程优先级。用于描述进程使用处理器的优先级别的整数,优先级高的进程应优先获得CPU

3) 进程调度所需的其他信息。他们与所采用的进程调度算法有关,如等待CPU的时间,已运行时间等

4) 事件或阻塞原因。指进程由执行状态转变为阻塞状态所等待发生的事件。

  4.进程控制信息

1) 程序和数据的地址,指进程的程序和数据所在的内存或外存的地址,以便再次调度到该进程执

    行时,能从PCB中找到其程序和数据。

2) 进程同步和通信机制,指实现进程同步和进程通信时必须的机制,如消息队列指针、信号量等

3) 资源清单,是一张列出了除CPU以外、进程所需的全部资源及已经分配到该进程的资源清单。

4) 连接指针,给出了本进程PCB所在队列的下一个进程PCB的首地址。

3.进程的创建和终止.

1) 创建 通过调用创建原语 Creat()

1.申请空白PCB.为新进程申请获得唯一的进程标示符,并从PCB集合中索取一个空白PCB

2.分配进程资源.包括创建进程的程序、数据及用户栈所需的内存空间。

3.初始化PCB.包括初始化标识信息,如进程标示符,父进程标示符;

  处理器将新进程的状态设置为就绪状态,以及进程的优先级等.

4.将新进程插入到就绪态对立.

2) 终止 通过调用终止原语来终止进程

1.根据被终止进程的标示符,从PCB队列中检索出该进程的PCB,从中读出该进程的状态.

2.若被终止进程正处于执行状态,则立即终止该进程的执行,该进程被终止后应重新进程调度.

3.检查该进程有无子孙进程,若有,则将其所有子孙进程终止.

4.释放终止的进程所占用的资源,将其归还它的父进程或系统.

5.将被终止的进程从它的PCB队列中移除.

4.进程的运行方式

1)fork()函数系统调用

通过复制来创建子进程,子进程继承父进程的上下文,是父进程的一个副本,与父进程使用同一段代码,

在该系统调用之后,两个代码相同的进程并发执行.

2)exec()函数系统调用 exec ls

在现有进程上执行,不会产生子进程,通常,进程的末尾写一条exit(),使进程自我终止,来标识进程的

退出状态,而exec调用方式则是在进程自身上执行这条exit(),所以会将当前进程退出.

3)source()函数系统调用 source .bash_profile 与.相同

与exec类似,只是进程的末尾没有exit(),故不会退出当前进程

查看进程echo $$ 查看当前进程号

# ps aux

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root         1  0.0  0.2   2064   624 ?        Ss   10:28   0:00 init [3]

USER:程序的执行者     PID:进程的ID号

%CPU:占用CPU的百分比  %MEM:占用内存的百分比

VSZ(进程占用内存的总大小):预分配的内存量,也就是程序所能使用的内存数量 单位KB

RSS(进程占用内存的真实大小):实际使用内存,在预分配的范围中已经使用的大小 单位KB

STAT:进程运行的状态(man ps)

R 进程已经准备好指令,等待让CPU执行,或CPU正在执行

T 进程的暂停状态,一般都是由运行状态状态转换而来,等待某种特殊处理,如调试跟踪的程序,每执行到一个断点,就转入暂停状态,等待新的输入信号.

S 进程可中断的睡眠模式 (可中断,就是程序接收到一种信号后可以改变到另一种状态)

Z 代表改进程目前为 zombie 状态.(失去父进程)

D 进程进入无法中断的睡眠模式.(不可中断,是因为硬件资源无法满足,不能被信号唤醒.必须等到所等到等待的资源得到之后才能被唤醒)

< 代表为高优先级

N 代表为低优先级

l 多线程

L 锁在内存中,防止和虚拟内存交换

s 会话,后台进程组(包含子进程 pstree -p)

+ 前台进程组

START:进程启动时间

TIME:进程占用CPU的时间

COMMAND:进程名字

# ps lax  查看进行的结构关系和优先级

F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND

4     0     1     0  15   0   2064   624 -      Ss   ?          0:00 init [3]

PPID  父ID

F     进程标识 FLAG

WCHAN 正在等待的进程资源

PRI   内核调度的优先级

NI    nice值 (root能调到负值,间接修改PRI值)

# ps auxf 全部进程间的层次关系

# pstree -p [PID] 指定进程间的层次关系 -p显示进程号

进程的优先级

renice -20 -p 3895  增加进程优先级

renice 19 -p 3895   减少进程优先级

nice 19 sleep 120   运行时指定优先级

nice --20 sleep 110 相当于-(-20)

结束进程

# kill -l  (查看信号)

# man 7 signal

  1) SIGHUP(restart) 9) SIGKILL(强行停止,kernel管理)   15) SIGTERM(默认,正常停止)   2)SIGINT(Ctrl+C)

SIGHUP:作用于不同的进程其功能不一样,与终端机建立关联的形成: 通知进程终端机将关闭.Daemon 进程:重置执行环境

pkill http* 或 killall httpd

进程的前后台切换

CTRL+Z 暂停前台进程放到后台

bg 1 启动后台进程  用jobs查看

fg 1 将后台进程切换到前台

sleep 60 &

kill %1

软件安装

rpm -ql httpd

rpm -qf /etc/httpd/conf/httpd.conf

rpm -ivh .rpm --force  修复安装

rpm -e sendmail --force   强制卸载

rpm -e sendmail --nodeps  不考虑依赖关系

cd /etc/pki/rpm-gpg/   GPG协议库

rpm --import RPM-GPG-KEY-redhat-release

yum 解决依赖关系

vi /etc/yum.conf  建立新站点

  [Server]

name=RHEL 5U3 ISO

baseurl=file:///media/Server    位置(绝对路径)    baseurl=http://IP/dir/Server

gpgcheck=0

  [Cluster]

name=RHEL 5U3 ISO

baseurl=file:///media/Cluster

yum install vsftpd

yum -y remove vsftpd  -y取消交互yes

yum grouplist

yum groupinstall "DNS Name Server"

yum groupremove "DNS Name Server"

yum clean all

/etc/yum.repos.d   配置文件加载模块.repo

createrepo /yum    创建包间依赖关系数据

media:983274983274.89237489 错误修改

/usr/lib/python2.4/site-packages/yum/yumRepo.py

remote = '/mnt/Server' + '/' + relative

RPM源码包的安装

1.执行rpm -i you-package.src.rpm

2.cd /usr/src/redhat/SPECS

3.rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件

  rpmbuild -bb --target=$(uname -m) lftp.spec

  在/usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是i686,noarch等等 uname -m)

  在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。

  执行rpm -i new-package.rpm即可安装完成。

tar源码包的安装

根据不同软件会有不同的安装参数和相应的方法 具体的要查看 INSTALL or README

# tar xvjf lftp-3.7.14.tar.bz2

# ./configure --help --prefix=/usr/local/lftp

# make

# make install

原创粉丝点击