现代操作系统的两大功能:硬件控制和资源管理。
同时运行多个程序就是多任务。支持这种的就是多任务操作系统。多个程序中的一个子程序叫做一个线程。
每一个线程都有一个cpu注册值,这个值叫做context=上下文。但是可以共与其他线程享内存地址空间,占有相同地址空间的一组线程叫做进程。
一个进程控制一个子集的操作系统资源。操作系统和cpu都支持虚拟内存,每个进程都可能运行在分离的地址空间,用来保护其他进程。R>决定运行哪个进程,这叫做预留。预留经常是由一个操作系统的核心来做的,这个叫做内核。
一个操作系统会使用多个手段来预留线程。这也取决于操作系统的可选支持情况。
先进、先出是一个最简单的方式。它所占负载很小。是公平的:即所有的线程都均等,先来,就先服务。FIFO。
FIFO不适合实时的交互处理应用,实时处理需要快速、低cpuzu占用率
一种可能的解决方法是给每个进程机遇应用地绑定优先级,保证实时应用先占用cpu。
预约方式利用争抢来取代运行完整的,这个叫做争适者生存。这种操作系统叫做适者生存的多任务操作系统。
注意:上下文交换发生生在操作系统内核从cpu删除一个线程,且把其他线程填进来的时候。换
言之,上下文交换发生在电脑在当前工作下改变任务的
时候上下文交换可以使安静的执行在cpu时间的术语中,因为所有的处理器注册器必须保存给开
始拿掉cpu和还原给一开始放入cpu的线程。上下文本质是让争抢线程知道谁离开了,并让正要运行的线程知道上一个进程持续的时间
多任务争抢的好处是:他是周期性的。
他是难以打破的,没有谁可以垄断资源。
缺点是:他不如全运行完的方式有效利用。他加大了软件应用的复杂性。
show process Command 详细解释:
CPU utilization for five seconds: 98%/65%; one minute: 87%; five minutes: 49%
PID QTy PC Runtime (ms) Invoked uSecs Stacks TTY Process
1 Csp 602F5488 4 472 8 2624/3000 0 Load Meter
2 ME 60542634 3192 4261 749 7756/9000 0 OSPF Hello
3 Lst 602E0E00 1408 278 5064 5632/6000 0 Check heaps
4 Cwe 602D85E0 0 1 0 5572/6000 0 Chunk Manager
5 Cwe 602E6AA8 4 11 363 5620/6000 0 Pool Manager
6 Mst 6025F148 0 2 0 5588/6000 0 Timers
7 Mwe 6001D610 0 3 0 5476/6000 0 Serial Backgroun
8 Mwe 60326EE0 0 1 011608/12000 0 OIR Handler
9 Msi 6033B2D0 0 80 0 5612/6000 0 Environmental mo
10 Lwe 6033D0A8 2272 298 7624 4916/6000 0 ARP Input
11 Mwe 604D0180 0 4 0 5544/6000 0 DDR Timers
12 Mwe 604E67A8 0 2 011596/12000 0 Dialer event
13 Lwe 60638AE8 12 2 6000 5592/6000 0 Entity MIB API
14 Mwe 600218D8 0 1 0 5632/6000 0 SERIAL A'detect
15 Cwe 602EBBB0 0 1 0 5636/6000 0 Critical Bkgnd
16 Mwe 602B0370 172 1599 10710720/12000 0 Net Background
17 Lwe 602544C8 4 27 14811404/12000 0 Logger
18 Msp 602722D8 124 2348 52 5424/6000 0 TTY Background
19 Msp 602AF8F0 24 2358 10 5756/6000 0 Per-Second Jobs
20 Msi 60333560 68 2352 28 5616/6000 0 Partition Check
21 Hwe 602AFB64 10792 15682 688 5608/6000 0 Net Input
--More-- _
• PID— 进程描述号. 每一个进程都有一个单独的数字来描述和与其他的进程相区分.
• Qty— 进程优先级和进程的状态. 第一个字母的优先级含义如下:
o K— 没有优先级,进程被杀了。
o D— 没有优先级,进程瘫了.
o X— 没有优先级, 进程中断了.
o C— 紧急优先级
o H— 高优先级.
o M— 中优先级.
o L— 低优先级.
剩下的两个字母代表当前的处理状态:
o *— cpu正在处理.
o E— 进程正在等待一个重要动作.
o S— 进程休眠了.
o rd— 进程已经在运行了.
o we— 进程idle了, 等待一个重要动作.
o sa— 进程idle了, 等待一个指定的绝对时间的产生.
o si— 进程idle了,等待一个指定的时间间隔.
o sp— 进程idle了, 等待一个指定的时间间隔(周期性的).
o st— 进程idle了,等待一个时间终止.
o hg— 进程挂起了.
o xx— 进程死了.
• PC— 当进程持续放弃cpu时程序计数注册器的内容. 这个地方写的是内存的地址用以代表进程开始执行写一次占用的cpu.值0代表正在运行.
• Runtime— 使用cpu累计时间 (毫秒级).
• Invoked— 进程的建立起进程运行在cpu的总时间
• uSecs— 每次进程使用平均cpu时间 (毫秒级).
• Stacks— 堆叠空间使用状况. 斜线右边的数字(/)表示总的堆叠空间。 左边的数字代表空间利用率的最低水平线.
• TTY— 控制台设备相关的进程.0代表进程不是被控制台和通讯器相关的主系统控制台
• Process— 进程的名字.进程的名字不需要是唯一的 (一个进程的几分拷贝可以同时是激活状态的). 但是进程id号必须是唯一的。.
如果你运行了show processs命令在几个不同的ios系统, 你会发现有几个进程一直都有. 这些进程中的大多数 是用来执行家务管理的或者是提供服务给其他的进程.
普通常见系统进程和他们的功能。
系统进程代号 功能
EXEC console和异步口直接tty上来的命令行 (CLI). EXEC 进程提供用户 输入和对接口粘贴的支持。
Pool manager 管理缓冲池
Check heaps 周期性地确认 IOS代码运行时间的完整性 以及结构化内存的负载。
Per-minute jobs 一般系统进程,每60秒进行一次系统维护, 如 检查系统背景进程的堆叠
Per-second jobs 一般系统进程,用以运行每秒都要重复的工作.
Critical background 紧急优先级进程, 用来执行基本的系统服务, 如:当队列元素被用尽的时候,预留附加的IOS 队列元素 。
Net background 发送接口keepalive包, 非扼杀端口, 和进程接口状态的改变.
Logger 查找消息 (debug, error, and informational) 通过内核排队 由其他进程并 输出他们到控制台 以及可选的syslog服务器.
TTY background 管理直接通过tty异步连接上来的 激活的和启动"EXEC"进程让他们去激活