首页 > 编程知识 正文

windows系统面试题及答案(linux系统基础面试题)

时间:2023-05-04 00:08:52 阅读:75609 作者:4938

此博客的内容

一、进程与线程的关系和区别

二、Windows下的内存是如何管理的

三.中断和轮询的特点

四、什么是临界区,如何解决冲突?

五.分页符和分页符的区别?

六、进程间通信有什么方式? 它们有什么区别?

七.线程间的通信机制

八.什么是死锁? 发生条件? 如何避免死锁

九、进程间同步和互斥的区别,线程同步的方式?

十、流程的调度算法是什么?

一、进程与线程的关系及区别参考: https://blog.csdn.net/Yao Siming 2011/article/details/44280797

https://www.cn blogs.com/xy mqx/p/4442329.html 3358 www.Sina.com /

1.定义是对于某个具有独立功能的程序在某个数据集合上的一次执行活动,过程是系统进行资源分配和调度的独立单位。

3358www.Sina.com/是进程的实体,是CPU调度和调度的基本单位,是比进程小、可以独立执行的基本单位。线程本身基本上没有系统资源,是执行中不可缺少的资源,

一个线程可以创建并撤销另一个线程; 可以在同一进程中的多个线程之间同时运行。

线程对进程来说是一个更接近执行体的概念,可以与进程中的其他线程共享数据,但它有自己的堆栈空间,并有独立的执行序列。进程

1 .粒度分析:线程粒度小于进程

2 .日程分析:

3 .开销分析:

进程和线程的主要区别在于操作系统的资源管理方式不同。 进程有独立的地址空间,一个进程崩溃后,保护模式不会影响其他进程,线程只是一个进程中不同的执行路径。 线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间。 如果一个线程死了,说明整个进程都死了。 因此,虽然多进程程序比多线程程序强健,但在进程之间切换时会消耗资源,导致效率低下。线程

简单记住:

1 )简而言之,程序至少有一个进程,该进程至少有一个线程

2 )因为线程分隔方式小于进程,所以多线程程序的并发性很高。

3 )此外,进程在运行中具有独立的存储器单元,多个线程共享存储器,大大提高了程序的执行效率。

4 )线程在运行中与进程区分开来。 每个独立线程都有程序运行的入口、序列运行和程序出口。 但是,线程不能独立地执行,并且APP应用必须根据存在的APP应用提供对多个线程的执行控制。

5 )从逻辑上看,多线程的含义是在一个APP应用程序中,多个执行部分可以同时执行。 但是,为了安排和管理进程以及实现资源分配,操作系统并不将多个线程视为多个独立的APP应用程序。 这是进程和线程之间的重要区别。.关系

线程开销小,但不利于资源的管理和保护; 过程正好相反。

二. Windows上的内存是如何管理的?3. 区别

大型对象或结构数组但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程

适用于管理大型数据流(通常来自文件)并在一台计算机上运行多个进程时共享数据的4. 优缺点

非常适合管理大量小对象

三.中断和轮询特征对I/O设备的程序轮询方式是初始计算机系统对I/O设备的管理方式。 它定期向各种设备依次询问有无处理要求。 按顺序咨询后,有要求的就处理。 处理I/O设备的请求后,处理器将返回并继续工作。 虽然轮询需要很长时间,但轮询速度远远快于I/O设备,因此通常不会出现无法立即处理的问题。 当然,再高速的处理机,能够处理的输入输出设备的数量也是有限的。 另外,由于程序轮询占用了相当大的CPU处理时间,程序轮询是一种低效的方式,在现代计算机系统中很少使用。

轮询效率低、等待时间长、CPU利用率不高的中断容易忽略一些问题,CPU利用率高。

四、什么是临界区,如何解决冲突? 每个进程访问关键资源的进程称为关键节,一次只允许一个进程进入关键节,进入后不允许其他进程进入。 如果一些进程需要进入空闲的临界区域,则一次只能进入一个进程。 任何时候,处于临界区的过程都不能多于一个。 现有进程进入自己临界区的,进入其他临界区的进程必须等待。 进入临界区的过程应当在有限的时间内退出,使其他过程能够及时进入自己的临界区。 如果不能进入自己的临界领域,应该让出处理器,避免流程繁忙等现象。

五.分页符和分页符的区别? 页面是信息的物理单位,分页是为了实现离散的分配方式,减少存储器的尾数,提高存储器的利用率。 仅限分页符

是由于系统管理的需要,而不是用户的需要。
  段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。
  页的大小固定且由系统确定,把逻辑地址分为页号和页内地址两部分,由机器硬件实现的。因此一个系统只能有一种大小的页面。段的长度却不固定,决定于用户所编写的程序,通常由编写程序在对源代码进行编辑时,根据信息的性质来划分。
  分页的作业地址空间是一维的,即单一的线性空间。
  分段的作业地址空间是二维的,程序员在标识一个地址时,既需要给出段名,又需要给出段内地址。

六、进程间通信有哪些方式?它们的区别?

参考:https://blog.csdn.net/zddxmy_teng_/article/details/53325280
   https://blog.csdn.net/wh_sjc/article/details/70283843
IPC方式:7种
1.管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在有血缘关系的进程间使用,进程的血缘关系通常是指父子进程关系。
2.命名管道(named pipe):也是半双工的通信方式,但是它允许无亲缘关系关系进程间通信。

3.信号(signal):是一种比较复杂的通信方式,用于通知接收进程某一事件已经发生。
4.信号量(semophere):信号量是一个计数器,可用来控制多个进程对共享资源的访问。它通常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段

5.消息队列(message queue):消息队列是由消息组成的链表,存放在内核中,并由消息队列标识符标识。消息队列克服了信号传递消息少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。

6.共享内存(shared memory):就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问,共享内存是最快的IPC方式,它是针对其他进程间的通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量等配合使用,来实现进程间的同步和通信。
7.套接字(socket):套接口也是进程间的通信机制,与其他通信机制不同的是它可用于不同及其间的进程通信。
几种方式的比较:
管道:速度慢、容量有限
消息队列:容量收到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题。
信号量:不能传递复杂信息,只能用来同步。
共享内存:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全。

七、线程间的通信机制

参考:https://blog.csdn.net/alexlee1986/article/details/21227417
1.锁机制:互斥锁、条件变量、读写锁
 互斥锁提供了以排他方式防止数据结构被并发修改的方法。
 读写锁允许多个线程同时读共享数据,而对写操作是互斥的。
 条件变量可以以原子的方式进行阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用
2.信号量机制:包括无名信号量和命名线程信号量
3.信号机制:类似进程间的信号处理
线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。

八、什么是死锁?产生条件?如何避免死锁

死锁的概念:在2个或多个并发进程中,如果每个进程持有某有资源而又都等待别的进程释放它或他们现在保持的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗地讲,就是2个或多个进程被无限期地阻塞、相互等待的一种状态。
死锁产生的原因:系统资源不足,进程推进顺序非法
产生死锁的必要条件:
  1.互斥条件:一个资源每次只能被一个进程使用
  2.不可剥夺条件:进程已获得资源,在未使用完之前,不能被其他进程强行剥夺,只能主动释放
  3.请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
  4.循环等待条件:即进程集合{p0,p1,p2,p3…..pn};p0正在等待p1占用的资源,p1正在等待p2占用的资源,pn正在等待p0占用的资源。
 只要上述一个条件不成立,就不会发生死锁。
死锁的解除和预防:理解了死锁的原因,以及产生死锁的四个必要条件,就可以最大可能地避免和预防和解锁死锁。所以在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。对资源的分配要给予合理规划
死锁的处理策略:鸵鸟策略、预防策略、避免策略、检测与解除死锁

九、进程间同步与互斥的区别,线程同步的方式?

互斥:指某一个资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的
同步:是指在互斥的基础上(大多数情况下),通过其它机制实现访问者对资源的有序访问。大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。
同步:体现的是一种协作性。互斥:体现的是排它性。
进程同步的主要任务:是对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作。从而使程序的执行具有可再现性。
同步机制遵循的原则
 1.空闲让进;
 2.忙则等待;
 3.有限等待;
 4.让权等待;
  线程同步是指多个线程同时访问某资源时,采用一系列的机制以保证最多只能一个线程访问该资源。线程同步是多线程中必须考虑和解决的问题,以为很有可能发生多个线程同时访问(主要是写操作)同一资源,如果不进行线程同步,很可能会引起数据混乱,造成线程死锁等问题。
线程同步的方式
  临界区、互斥量、信号量、事件
  临界区:通过对多线程的串行化来访问公共资源或者一段代码,速度快,适合控制数据访问。
  互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以可以保证公共资源不会同时被多个线程访问。
  信号量:它允许多个线程同一时刻访问同一资源,但是需要限制同一时刻访问此资源的最大线程数目。信号量对象与其他前面几种方法不同,信号允许多个线程同时使用共享资源。
  事件(信号):通过通知操作的方式来保持多线程的同步,还可以方便实现多线程的优先级比较操作。

线程同步不同方式间的总结比较
  互斥量和临界区很相似,但是互斥量是可以命名的,它可以跨越进程使用,所以创建互斥量所需要的资源更多,如果只是为了在进程内部使用使用临界区会带来速度上的优势并能够减少资源占用量。
  互斥量、信号量、事件都可以被跨越进程使用来进行同步数据操作,而其他的对象与数据同步操作无关,但对于进程和线程来讲,如果进程和线程在运行状态则为无信号状态,所以可以使用WaitForSingleObject来等待进程和线程退出。

十、进程的调度算法有哪些?

  1.先来先服务(FCFS):此算法的原则是按照作业到达后备作业队列(或进程进入就绪队列)的先后次序选择作业(或进程)
  2.短作业优先(SJF:Shortest Process First):这种算法主要用于作业调度,它从作业后备序列中挑选所需运行时间最短的作业进入主存运行。
  3.时间片轮转调度算法:当某个进程执行的时间片用完时,调度程序便终止该进程的执行,并将它送到就绪队列的末尾,等待分配下一时间片再执行。然后把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证队列中的所有进程,在已给定的时间内,均能获得一时间片处理机执行时间。
  4.高响应比优先:按照高响应比(已等待时间+要求运行时间)/要求运行时间 优先的原则,在每次选择作业投入运行时,先计算此时后备作业队列中每个作业的响应比RP。选择最大的作业投入运行。
  5.优先权调度算法:按照进程的优先权大小来调度。使高优先权进程得到优先处理的调度策略称为优先权调度算法。注意:优先数越多,优先权越小。
  6.多级队列调度算法:多队列调度是根据作业的性质和类型的不同,将就绪队列再分为若干个队列,所有的作业(进程)按其性质排入相应的队列中,而不同的就绪队列采用不同的调度算法。

未完待续,望批评指正…

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。