进程和线程的区别
进程和线程的区别
进程是一个动态概念,是并发执行的程序在执行中分配和管理资源的基本单位,而线程是进程的一个执行单元,是比进程更小的独立运行基本单位,因此地址空间、资源、执行过程等方面都存在差异。
进程之间的地址空间是相互独立的,每一个进程系统都会分配不同的地址空间等,而同一进程中的线程则共享同一个地址空间。
同一进程内的线程共享本进程中的资源,如内存、I/O等,但不同进程之间所占用的资源是独立的。若运行中一个进程崩溃后,其他进程不会受到影响;但一个线程若崩溃,整个进程都可会受到影响。
每个独立的进程都有一个程序运行入口、顺序执行序列和程序入口,而线程则不能独立执行,需要存在于应用程序中,并由应用程序对线程执行进行控制。
守护进程
守护进程
守护进程是一个在后台运行期不受任何终端控制的特殊进程,主要用于执行特定系统任务,很多守护进程从系统引导时启动后,会一直运行至系统关闭;而有些守护进程,在执行完特定任务后会自动结束。守护进程的运行方式主要有独立运行、由 xinetd 管理两种:独立运行的守护进程由init脚本负责管理,所有独立运行的守护进程的脚本在/etc/rc.d/init.d/目录下;由 xinetd 管理的守护进程,系统运行的每一种服务,都需要运行一个监听某个端口连接的守护进程,因此会造成一定的资源浪费。
进程间通信
进程间通信
由于每个进程之间是相互独立的 但内核空间是每个进程共享的,因此进程之间的通信需要通过内核实现,主要的进程间通信方式有以下几种:
- 管道:管道是一种最简单的通信方式,其本质是内核中的一个缓存,但效率相对较差,不适合频繁的数据交换;
- 消息队列:若有两个进程需要通信,A进程向消息队列写入数据后就可正常返回;B进程需要相关数据时直接读取即可,效率更高;
- 共享内存:这种方式解决了消息队列中数据拷贝的问题,采用这种方式不同进程都会释放出一部分虚拟内存空间,并映射到相同的物理内存空间中,无需拷贝,其他进程就能获取所需的数据。
杀死进程
杀死进程
一个进程任务完成后会自动终止,但如果想中途终止某个进程,需要根据程序运行的位置选择相应的终止方式,对于在前台运行的任务,可直接通过 Ctrl+C 终止;若进程是在后台运行的程序,则需要找到对应的进程号,然后使用kill 命令结束该进程,在使用 kill 命令时,最常用的信号是 SIGTERM(15)和 SIGKILL(9)。
进程状态
进程状态
进程状态主要反应进程执行过程中的变化,运行状态会随着进程的执行和外界条件变化而持续转换,进程状态主要分为三态模型和五态模型两种。
三态模型中,主要包括运行态、就绪态和阻塞态三种基本状态,运行态是指进程占用处理器正在运行的状态;就绪态是进程具备运行条件,等待系统分配处理器运行的状态;阻塞态,则表示当前不具备运行条件,正在等待某个时间完成,这三种状态覆盖从进程创建到结束整个生命周期。
五态模型,相较于三态模型,增加了新建态、终止态两种状态。新建态是进程刚刚被创建的状态,包含了新进程的必要管理信息;而终止态则是完成了善后操作的进程,即进程结束运行后,操作系统删除了该进程。
亚马逊云科技云服务管理工具优势
个性化的服务运行状况视图
Amazon Personal Health Dashboard 提供支持应用程序的亚马逊云科技服务状态的个性化视图,让用户能够快速查看运行的各类亚马逊云科技服务遇到的问题。
主动通知
控制面板可提供前瞻性通知,用户可跨多个渠道(包括电子邮件和移动通知)设置警报,以便能够及时收到相关信息,提前制定规划,降低对整体运行的影响。
集成和自动化
Amazon Personal Health Dashboard 可以与 Amazon CloudWatch Events 集成,用户能够构建自定义规则并选择目标(如 Amazon Lambda 函数)来定义自动修复操作。
亚马逊云科技云服务管理工具优势
个性化的服务运行状况视图
Amazon Personal Health Dashboard 提供支持应用程序的亚马逊云科技服务状态的个性化视图,让用户能够快速查看运行的各类亚马逊云科技服务遇到的问题。
主动通知
控制面板可提供前瞻性通知,用户可跨多个渠道(包括电子邮件和移动通知)设置警报,以便能够及时收到相关信息,提前制定规划,降低对整体运行的影响。
集成和自动化
Amazon Personal Health Dashboard 可以与 Amazon CloudWatch Events 集成,用户能够构建自定义规则并选择目标(如 Amazon Lambda 函数)来定义自动修复操作。