进程和线程的关系:
(1)一个线程只能属于一个进程,而一个进程能够有多个线程,但至少有一个线程。
(2)资源分配给进程,同一进程的全部线程共享该进程的全部资源。
(3)线程在执行过程当中,须要协做同步。不一样进程的线程间要利用消息通讯的办法实现同步。
(4)线程是指进程内的一个执行单元,也是进程内的可调度实体。
线程与进程的区别:
(1)线程做为调度和分配的基本单位,进程做为拥有资源的基本单位。
(2)系统在运行的时候会为每一个进程分配不一样的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
(3)在操做系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(经过CPU调度,在每一个时间片中只有一个线程执行)
(4)每一个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程能够看作轻量级的进程,同一类线程共享代码和数据空间,每一个线程都有本身独立的运行栈和程序计数器(PC),线程之间切换的开销小。
线程调度:按照特定机制为多个线程分配CPU的使用权。
有两种调度模型:
分时调度:全部线程平分cpu的时间片,轮流占用CPU
抢占式调度:根据优先级占用CPU
调度算法:根据系统的资源分配策略所规定的资源分配算法
(1)时间片轮转法
在早期的时间片轮转法中,系统将全部的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU 分配给队首进程,并令其执行一个时间片。时间片的大小从几ms 到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来中止该进程的执行,并将它送往就绪队列的末尾;而后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就能够保证就绪队列中的全部进程在一给定的时间内均能得到一时间片的处理机执行时间。换言之,系统能在给定的时间内响应全部用户的请求。
(2)高响应比优先调度算法
在批处理系统中,短做业优先算法是一种比较好的算法,其主要的不足之处是长做业的运行得不到保证。若是咱们能为每一个做业引入前面所述的动态优先权,并使做业的优先级随着等待时间的增长而以速率a 提升,则长做业在等待必定的时间后,必然有机会分配处处理机。该优先权的变化规律可描述为:
响应比=(等待时间+服务时间)/服务时间
根据公式可知:
看成业的等待时间相同时,则要求服务时间越短,其响应比越高,有利于短做业。
当要求服务时间相同时,做业的响应比由其等待时间决定,等待时间越长,其响应比越高,于是它实现的是先来先服务。
对于长做业,做业的响应比能够随等待时间的增长而提升,当其等待时间足够长时,其响应比即可升到很高,从而也可得到处理机。克服了饥饿状态,兼顾了长做业。
(3)先来先服务算法
先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于做业调度,也可用于进程调度。当在做业调度中采用该算法时,每次调度都是从后备做业队列中选择一个或多个最早进入该队列的做业,将它们调入内存,为它们分配资源、建立进程,而后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最早进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
(4)最短优先调度算法
最短优先调度算法是指对短做业或短进程优先调度的算法。它们能够分别用于做业调度和进程调度。短做业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的做业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它当即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再从新调度。
(1)管道(Pipe)
管道包括三种:
①普通管道PIPE: 一般有两种限制,一是单工,只能单向传输;二是只能在父子或者兄弟进程间使用.
②流管道s_pipe: 去除了第一种限制,为半双工,只能在父子或兄弟进程间使用,能够双向传输.
③命名管道:name_pipe:去除了第二种限制,能够在许多并不相关的进程之间进行通信.
(2)消息队列( message queue )
①消息队列能够认为是一个全局的一个链表,链表节点钟存放着数据报的类型和内容,有消息队列的标识符进行标记。
②消息队列容许一个或多个进程写入或者读取消息。
③消息队列的生命周期随内核。
④消息队列可实现双向通讯。
(3)共享内存( shared memory )
共享内存就是映射一段能被其余进程所访问的内存,这段共享内存由一个进程建立,但多个进程均可以访问。共享内存是最快的 IPC 方式,它是针对其余进程间通讯方式运行效率低而专门设计的。它每每与其余通讯机制,如信号两两配合使用,来实现进程间的同步和通讯。
(4)信号 ( sinal )
信号是一种比较复杂的通讯方式,用于通知接收进程某个事件已经发生。
(5)套接字( socket )
套接字也是一种进程间通讯机制,与其余通讯机制不一样的是,它可用于不一样机器间的进程通讯。
(6)信号量( semophore )
信号量是一个计数器,能够用来控制多个进程对共享资源的访问。它常做为一种锁机制,防止某进程正在访问共享资源时,其余进程也访问该资源。所以,主要做为进程间以及同一进程内不一样线程之间的同步手段。
协程是一种用户态的轻量级线程,即协程是由用户程序本身控制调度的。
从编程角度上看,协程的思想本质上就是控制流的主动让出(yield)和恢复(resume)机制。yield让协程暂停,和线程的阻塞是有本质区别的。协程的暂停彻底由程序控制,线程的阻塞状态是由操做系统内核来进行切换。所以,开销更小。
缺点:
1.协程的本质是单线程下,没法利用多核,能够是一个程序开启多个进程,每一个进程内开启多个线程,每一个线程内开启协程。
2.协程指的是单个线程,于是一旦协程出现阻塞,将会阻塞整个线程。
1. awk
awk是行处理器,是以文件的一行内容为处理单位的。awk读取一行内容,而后根据指定条件判断是否处理此行内容,若此行文本符合条件,则按照动做处理文本,不然跳过此行文本,读取下一行进行判断。
awk 'condition { action }' filename 处理指定文件的内容
command | awk ' condition { action }' 处理某个命令的执行结果
注:condition:条件。若此行文本符合该条件,则按照 action 处理此行文本。不添加条件时则处理每一行文本;
action:动做。按照动做处理符合要求的内容。通常用于打印指定的内容信息;
2. top
top命令是Linux下经常使用的性能分析工具,可以实时显示系统中各个进程的资源占用情况,相似于Windows的任务管理器。
3. netstat
查看本机开启端口号
4. grep
用于查找文件里符合条件的字符串。
grep "被查找的字符串" 文件名 从文件内容查找匹配指定字符串的行
grep –e "正则表达式" 文件名 从文件内容查找与正则表达式匹配的行
5. less
对文件或其它输出进行分页显示的工具
6. tail
用于查看文件的内容,有一个经常使用的参数 -f 经常使用于查阅正在改变的日志文件
r:表明权限是可读,r也能够用数字4表示正则表达式
w:表明权限是可写,w也能够用数字2表示算法
x:表明权限是可执行,x也能够用数字1表示编程
chmod u=rwx,g=rw,o=r aaa.txt 等价于 chmod 764 aaa.txtless