【八股】os
白速龙王的回眸
一命二运三风水
四积功德五读书
六名七相八敬神
九交贵人十养生
展开
-
【os】线程和进程的区别和联系
线程和进程的区别和联系1.一个线程只属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程依赖于进程而存在。2.进程在执行过程中拥有独立的地址空间,而多个线程共享进程的地址空间。(资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。)3.进程是资源分配的最小单位,线程是cpu调度的最小单位。4.通信:由于同一个进程中的多原创 2022-05-13 16:28:59 · 174 阅读 · 0 评论 -
【os】为什么需要线程
线程产生的原因:进程可以使多个程序能并发执行,以提高资源的利用率和系统的吞吐量;但是具有一些缺点:1.进程在同一时刻只能做一个任务,很多时候不能充分利用CPU资源2.进程在执行的过程中如果发生阻塞,整个进程就会被挂起,即使进程中的其他任务不依赖于等待的资源,进程仍会被阻塞。引入线程就是为了解决以上进程的不足,线程具有以下的优点:1.从资源上来讲,开辟一个线程所需要的资源要远小于一个进程2.从切换效率上来讲,运行一个进程中的多个线程,它们之间使用相同的地址空间,而且线程间彼此切换所需时间也远远小于原创 2022-05-12 12:25:15 · 988 阅读 · 0 评论 -
【os】孤儿进程、僵尸进程、线程
孤儿进程父进程退出,子进程还在运行的这些子进程都是孤儿进程,孤儿进程将被init进程(1号进程)收养,并由init进程对他们完成状态收集工作僵尸进程进程始用fork创建子进程,如果子进程退出,而父进程并没有调用wait或者waitpid获取子进程的状态信息,那么子进程的描述进程符仍然保存在系统中,这些就是僵尸进程什么是线程1.是进程划分的任务,是一个进程内可调度的实体,是cpu调度的基本单位,用于保证程序的实时性,实现进程内部的并发2.线程是os可识别的最小执行和调度单位,每个线程都独自占用一个原创 2022-05-11 13:05:26 · 272 阅读 · 0 评论 -
【os】进程调度策略的指标和状态
进程调度策略的基本设计指标CPU利用率系统吞吐量、即单位时间内CPU完成的作业的数量响应时间周转时间。是指作业从提交到完成的时间间隔。从每个作业的角度看,完成每个作业的时间也是很关键,其中包括平均周转时间、带权周转时间和平均带权周转时间进程的状态和转换进程在运行时有三种基本状态:就绪态、运行态和阻塞态1.运行态running:进程占有处理器正在运行的状态。进程已获得CPU,其程序正在执行。在单处理及系统中,只有一个进程处于执行状态;在多处理机系统中,则有多个进程处于执行状态2.就绪态r原创 2022-05-10 11:54:47 · 239 阅读 · 0 评论 -
【os】进程调度的时机、不能调度的情况、进程的调度策略
【进程调度的识机】1.当前运行的进程运行结束2.当前运行的进程由于某种原因阻塞3.执行完系统调用等系统程序后返回用户进程4.在使用抢占调度的系统中,具有更高优先级的进程就绪5.分时系统中,分给当前进程的时间片用完【不能进行进程调度的情况】1.在中断处理程序执行时2.在操作系统的内核程序临界区内3.其他需要完全屏蔽中断的源自操作过程中【进程的调度策略】1.先到先服务2.短作业优先3.优先级调度4.时间片轮转调度5.高响应比优先6.多级队列7.多级反馈队列...原创 2022-05-09 11:20:43 · 711 阅读 · 0 评论 -
【os】如何编写正确且安全的信号处理函数
如何编写正确且安全的信号处理函数1.处理程序要尽可能简单。避免麻烦的最好方法是保持处理程序尽可能小和简单。2.在处理程序中只调用异步信号安全的函数。3.保存和回复errno4.阻塞所有的信号,保护对共享全局数据结构的访问。5.用valatile申明全局变量6.用sig_atomic_t申明标志7.信号的一个与直觉不符的方面是未处理的信号是不排队的...原创 2022-05-07 20:14:45 · 318 阅读 · 0 评论 -
【os】什么是信号
什么是信号一个信号就是一条小消息,它通知进程系统中发生了一个某种类型的事件。linux系统上支持的30种不同类型的信号。每种信号类型都对应于某种系统事件。底层的硬件异常是由内核异常处理程序处理的,正常情况下,对用户进程是不可见的。信号提供了一种机制,通知用户进程发生了这些异常。1.发送信号:内核通过更新目的进程上下文中的某个状态,发送一个信号给目的进程。发送信号可以有以下两种原因:内核检测到一个系统事件,比如除零错误或者子进程终止一个进程调用了kill函数,显示地要求内核发送一个信号给目的进程。一原创 2022-05-06 10:22:06 · 208 阅读 · 0 评论 -
【os】进程如何通过共享内存通信
进程如何通过共享内存通信它使得多个进程可以访问同一块内存空间,不同的进程可以及时看到对方进程中对共享内存中数据的更新。这种方式需要依赖某种同步操作,如互斥锁和信号量等特点:共享内存是最快的一种IPC,因为进程是直接对内存进行操作来实现通信,避免了数据在用户空间和内核空间来回拷贝因为多个进程可以同时操作,所以需要进行同步处理信号量和共享内存通常结合在一起使用,信号量用来同步对共享内存的访问...原创 2022-05-05 14:28:01 · 168 阅读 · 0 评论 -
【os】进程如何通过管道进行通信
进程如何通过管道进行通信管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道。有如下特质:其本质是一个伪文件(实为kernel cache)由两个文件描述符引用,一个表示读端,一个表示写端规定数据从管道的写端流入管道,从读端流出管道的原理:管道实为内核使用环形队列机制,借助内核缓冲去实现管道的局限性:数据自己读不能自己写数据一旦被读走,便不在管道中存在,不可反复读取由于管道采用半双工通信,因此,数据只能在一个方向上流动只有原创 2022-05-04 11:51:44 · 267 阅读 · 0 评论 -
【os】进程间的通信方法
【简述进程间的通信方法】每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过kernel,在kernel中开辟一块cache,进程A把数据从用户空间拷贝到kernel cache,进程B再从kernel cache中把数据读走,内核提供的这种机制称为进程间通信。不同进程的通信本质:进程之间可以看到一份公共资源;而提供这份资源的形式或者提供者不同,造成了不同的通信方式进程间通信的主要包括:1.管道2.系统IPC(包括消息队列、semaphor原创 2022-05-03 14:32:00 · 263 阅读 · 0 评论 -
【os】进程基本操作
以Unix系统举例:1.【进程的创建】fork新创建的子进程几乎但不完全与父进程相同。子进程得到与父进程用户级虚拟地址空间相同的(但是独立的)一份副本,包括代码和数据段、堆、共享库以及用户栈。子进程还获得与父进程任何打开文件描述符相同的副本,这就意味着当父进程调用fork时,子进程可以读写父进程中打开的任何文件。父进程和新创建的子进程之间最大的区别在于它们有不同的pid。fork函数是有趣的,因为它只被调用一次,却会返回两次:一次是在调用进程(父进程)中,一次是在新创建的子进程中。在父进程中,fork返原创 2022-05-01 14:35:31 · 170 阅读 · 0 评论 -
【os】内核态用户态切换、并发并行、什么是进程
【如何实现内核态和用户态的切换】处理器从用户态切换到内核态有三种方法:系统调用、异常、外部中断1.系统调用是操作系统的最小功能单位,是操作系统提供的用户接口,系统调用本身是一种软中断2.异常:也叫内中断,是由错误引起的,如文件损坏、缺页故障等3.外部中断:是通过两根信号线来通知处理器外设的状态变化,是硬中断【并发和并行的区别】1.并发concurrency:指宏观看起来两个程序在同时运行,比如说在单核cpu上的多任务,但是从微观上两个程序的指令是交织着运行的,指令间交错执行,在单个周期内只运行了原创 2022-04-30 14:25:19 · 668 阅读 · 0 评论 -
【os】操作系统、分类、用户态和内核态
【什么是操作系统?】操作系统是管理计算机硬件和软件资源的计算机程序,提供一个计算机用户与计算机硬件系统之间的接口向上对用户程序提供接口,向下接管硬件资源操作系统本质上也是一个软件,作为最接近硬件的系统软件,负责处理器管理、存储器管理、设备管理、文件管理和提供用户接口【操作系统有哪些分类?】操作系统常规可分为批处理操作系统、分时操作系统、实时操作系统若一个操作系统兼顾批操作和分时的功能,则称该系统为通用操作系统常见的通用操作系统有:windows、linux、macos等【什么是内核态和用户态原创 2022-04-29 11:11:57 · 277 阅读 · 0 评论