shell学习四十八天----进程建立

进程

前言:进程指的是执行中程序的一个实例.新进程由fork()与execve()等系统调用所起始,然后执行,知道他们下达exit()系统调用为止.

linux系统都支持多进程.虽然计算机看起来像是一次做了很多事,但除非是他拥有多个CPU,否则一次做了好多事只是个错觉.事实上,每个进程仅容许在一个极短的期间执行,我们称为时间片段,之后进程会先暂时搁置,让其他等待中进程执行.时间片段极短,通常只有几微妙,所以人们很少感觉到进程将控制权交回内核,再交给另一个进程的这种文本切换.进程本身不会管理文本切换这件事,也没有必要在程序里撰写撤回控制权予OS的处理.

操作系统内核里,称为调度器的部分负责管理进程的执行.当出现多CPu时,调度器会试着使用所有CPU处理工作负载.用户除了觉得响应速度的改善之外,多半不会察觉有何不同.

进程会被指定优先级,这么一来,有时间考虑的进程便能比不重要的进程先执行.nice与renice命令即用于调整进程的优先级.

在任何瞬间,等待执行之进程的平均数,被称为平均负载,最简单的uptime命令便能显示:

$uptime

20:30:35 up 45 min,  2 users,  load average: 0.05, 0.11, 0.05

分析:显示开机至今的时间,用户数,以及平均负载.

由于平均负载会一直变化,uptime会回报三个平均时间估算值,分别为最后一分钟,五分钟,以及十分钟的估算值.当平均负载持续的超出可用CPU的承载时,表示系统工作已超出它所能负荷的了,此时响应可能会陷入停滞不前的状态.

进程建立

很多程序都有shell启动:每个命令行里的第一个单词是识别要执行的程序.一个命令shell所起始每个进程,都会以下列保证事项启动:

1.进程具有一个内核本文:在内核里的数据结构,会记录与进程相关的信息,让内核便于管理与控制进程的执行.

2.进程拥有一个私有的,被保护的虚拟地址空间,它可能就像机器可定址空间那么大.不过,其他资源的限制,像是实例内存与外部存储设备上的swap空间所组合的大小,其他执行中工作的大小,或是系统调校参数的本地端设置,都会加诸进程执行上的限制.

3.三个文件描述符(标准输入,标准输出,标准错误输出)都已开启,且立即可用.

4.起始于交谈模式shell的进程,会拥有一个控制终端机,其扮演三个标准文件数据流而定默认来源处与目的地.控制终端机是让用户可将信号传送给进程.

5.命令行参数里的通配字符会被展开

6.内存的一个环境变量区域会存在,包含具有键与值指定的字符串,可通过程序库调用取得.

这些保证没有任何差别待遇;所有执行于相同优先级层级的进程都一视同仁,且进程可以由任何程序写成.

私有地址空间可确保进程不受其他程序不瘦其他进城或内核干扰.未提供这样保障的操作系统很容易出错.

这三个已开启的文件,对大部分的程序来说已经足够,可以使用他们而无需烦恼文件开启与关闭的操作,也不需要知道任何文件名语法或文件系统.

由shell展开的通配符字符串会免除程序的很多负担,也提供了统一性的命令行处理.

环境空间使出了命令与输入文件之外,可提供信息给进程的另一种方式.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-02 15:43:33

shell学习四十八天----进程建立的相关文章

shell学习四十八天----文件校验和匹配

文件校验和匹配 要是你怀疑可能有非常多文件具有同样的内文,而是用cmp或diff进行比較全部横队的比較,导致所花费的时间会随着文件数目增长成次方的增长. 这是能够使用file checksum(文件校验和),取得近似线性的性能.有非常多工具可用来计算文件与字符串的校验和,包含sum,cksum,以及checksum,消息摘要工具md5与md5sum,安全性散列算法工具sha,shalsum,sha256,以及sha384. 案例: $echo -n "hello" | md5sum |

shell学习四十九天----进程建立

进程 前言:进程指的是运行中程序的一个实例.新进程由fork()与execve()等系统调用所起始,然后运行,知道他们下达exit()系统调用为止. linux系统都支持多进程.尽管计算机看起来像是一次做了非常多事,但除非是他拥有多个CPU,否则一次做了好多事仅仅是个错觉.其实,每一个进程仅容许在一个极短的期间运行,我们称为时间片段,之后进程会先临时搁置,让其它等待中进程运行.时间片段极短,通常仅仅有几微妙,所以人们非常少感觉到进程将控制权交回内核,再交给还有一个进程的这样的文本切换.进程本身不

shell学习三十八天----执行顺序和eval

执行顺序和eval shell从标准输入或脚本中读取的每一行称为管道,它包含了一个或多个命令,这些命令被一个或多个管道字符(|)隔开. 事实上嗨哟很多特殊符号可用来分割单个的命令:分号(;),管道(|),&,逻辑AND(&&),逻辑OR(||).对于每一个地区的管道,shell都会将命令分割,为管道设置I/O,并且对每一个命令依次执行下面的操作. 看起来很复杂,但是每一个步骤都是在shell的内存里发生的,shell不会真的把每个步骤的发生演示给我们看.所以这是我们分析shell内

shell学习五十八天----/proc文件系统

/proc文件系统 前言:linux中的/proc文件系统,由一组目录和文件组成,挂载(mount)与/proc目录下. /proc文件系统是一种虚拟文件系统,以文件系统目录和文件形式,提供一个指向内核数据结构的接口.这为查看和改变各种系统属性开启了方便之门.此外,还能通过一组以/proc/PID形式命名的目录(PID是进程的ID)查看系统汇总运行各进程的相关信息. 通常,/proc目录下的文件内容都采取可读的文本形式,shell脚本也能对其进行解析.程序可以打开,读取和写入/proc目录下的既

shell学习四十一天----列出文件ls和od命令

列出文件 首先恶臭命令提供简单的方式列出匹配模式的文件: 命令: echo /bin/*sh #显示/bin下的shell 输出:/bin/bash /bin/csh /bin/dash /bin/sh /bin/tcsh 分析:shell将通配符字符模式替换为匹配的文件列表,echo以空格区分文件列表,在单一行上显示他们.echp不会更近一部解释他的参数,因此与文件系统里的文件也没有任何关系. ls命令则比echo能做更多的处理,因为他纸袋自己的参数应该是文件.未提供命令行选项时,ls只会验证

linux shell学习四

Shell分支语句 case 值 in 模式1) command1 command2 command3 ;; 模式2) command1 command2 command3 ;; *) command1 command2 command3 ;; esac 说明:case后为取值,值后为关键字 in,接下来是匹配的各种模式,每一模式最后必须以右括号结束. 值可以为变量或常数.  ;;类似C语言的break,不可取消! 举例: #!/bin/sh #auther:linuxdaxue.com #da

shell学习四十天----awk的惊人表现

awk的惊人表现 awk可以胜任几乎所有的文本处理工作. awk 调用 1.调用awk: 方式一:命令行方式 awk [-F field-separator ] 'commands' input-file(s) [ -F域分隔符 ]是可选的,因为awk使用空格作为缺省的域分隔符,因此如果要浏览域间有空格的文本,不必指定这个选项,如果要浏览例如passwd文件.此文件名域以冒号作为分隔符,则必须指明-F选项,如: awk -F 'commands' input-file 方式二:将所有awk命令插

shell学习四十五天----xargs

执行命令:xargs 当find产生一个文件列表时,该列表提供给另一个命令有时是很有用的. 案例: $touch abc.c erd.c oiy.c $ll ./erd.c ./abc.c ./oiy.c $find -name '*.c'| rm rm: 缺少操作数 请尝试执行"rm --help"来获取更多信息. $find -name '*.c'| xargs rm $find -name '*.c' 无任何显示,说明已成功删除. 1.简介,之所以能用到这个命令,关键是由于很多命

shell学习四十六天----文件系统的空间信息df和du命令

文件系统的空间信息 df命令 df命令提供单行摘要,一行显示一个加载的问价系统的已使用的和可用的空间.其单位视系统而定,有些使用块,有些则是KB.大部分现代实现都支持-k选项,也就是强制使用KB单位,以及-l(小写字母L)选项,仅显示本地文件系统,排除网络加载的文件系统. df命令详解 语法: df [选项] [文件或目录] 用途: 显示一个或多个文件系统内部的inode或空间使用情况 主要选项: -i 显示inode技术,而非空间 -k 显示空间时,以KB为单位,而非块 -l 小写L,仅显示本