当前位置: > 财经>正文

操作系统重难点解析 外汇操作方法有哪些类型的论文题目

2023-08-27 04:21:45 互联网 未知 财经

操作系统重难点解析

文章目录 1、请分别简单说说进程与线程以及它们的区别2、线程同步的方式有哪些3、进程的通信方式有哪些?4、什么是缓冲区溢出?有什么危害?其原因是什么?5、什么是死锁?死锁产生的条件?如何避免?5.1 Lock5.2 Synchronized5.3 Lock和Synchronized的区别 6、进程有哪几种状态?7、分页和分段有什么区别?8、操作系统中进程调度策略有哪几种?9、操作系统中为什么分为内核态和用户态,两者之间的切换10、简述IO多路复用10.1 同步阻塞IO10.2 同步非阻塞IO10.3 IO多路复用(异步阻塞IO模型)10.4 异步IO 11、CAS

1、请分别简单说说进程与线程以及它们的区别 进程是具有一定功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源调度分配的一个独立单元;一个进程地内存空间是共享的。线程是进程的实体,是CPU调度和分配的基本单位,它是比进程更小的能独立运行的基本单位;线程可以利用进程所拥有的资源执行调度和运算。

区别

一个进程可以有多个线程,多个线程可以并发执行。同一进程的线程共享同一内存空间,但进程之间是独立的;同一进程的所有线程的数据是共享的,进程之间的数据是独立的;对主线程的修改可能会影响其他线程的行为,但是父进程的修改(除删除外)不会影响其他子进程;同一个进程的线程之间可以直接通信,但是进程之间的交流需要借助中间代理来实现。

参考进程与线程的一个简单解释、进程、线程、多线程、并发、并行详解

2、线程同步的方式有哪些 互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问;(类似于厕所资源)信号量:它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量;(类似于会议室资源)事件(信号):事件机制,允许一个线程在处理完一个任务后,主动唤醒另一个线程执行任务。通过提高操作的方式来保持多线程同步,还可以方便地实现多线程优先级地比较操作。 参考线程同步的几种方式 3、进程的通信方式有哪些?

进程通信就是在不同进程之间传播或交换信息。主要分为:管道、系统IPC(包括消息队列、信号量、共享存储)、socket; 管道主要分为:普通管道Pipe,流管道(s_pipe),命名管道(name_pipe)

普通管道是一种半双工的通信方式,数据只能单项流动,并且只能在父子进程之间流动;命名管道也是半双工的通信方式,它允许不相关的进程间进行通信;流管道可以双向传输,只能是父子进程之间流动;

系统IPC的三种方式类似,都是使用了内核里的标识符来识别

消息队列是消息的链表,存放在内核中并由消息队列标识符标识;信号量是一个计数器,用来控制多个进程对资源的访问,通常作为一个锁机制;共享内存就是映射一段能被其他进程访问的内存,这段共享内存由一个进程创建,但是多个进程可以访问。是最快的IPC方式。

套接字(socket):是一种进程间通信机制,与其他通信机制不同的是,它可以用于不同进程的通信。 参考 进程间的几种通信方式

4、什么是缓冲区溢出?有什么危害?其原因是什么?

缓冲区溢出是指计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。 危害

程序崩溃,导致拒绝服务;跳转并且执行一段恶意代码;

造成缓冲区溢出的主要原因是程序中没有仔细检查用户输入。

参考 缓冲区溢出攻击

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

在两个或多个并发进程中,如果每个进程持有某种资源而又等待其他进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。即:两个或多个进程无限期的阻塞、相互等待的一种状态。 产生死锁的四个条件:

互斥条件:一个资源一次只能被一个进程使用;占有且等待条件:一个进程因请求资源而阻塞时,对已获得资源保持不放,并等待其他进程释放该资源;不剥夺条件:进程获得的资源,在未完全使用完之前,不能强行剥夺;循环等待条件:若干进程之间形成一种头尾相接的环形等待资源关系。

避免死锁的方法

死锁预防——确保系统永远不会进入死锁状态,即破坏其必要条件。由于互斥条件是非共享资源所必须的,不仅不能改变还应加以保证,主要是破坏其他三个条件。 破坏“占有且等待”条件 方法1:所有的进程开始运行之前,必须一次性申请其在整个运行过程中所需要的全部资源; 优点:简单易实施且安全; 缺点:因为某项资源不满足进程无法启动,而其他已经满足了的资源也不会得到利用,降低资源利用率;方法2:允许进程只获得允许初期需要的资源便开始允许,在运行过程中逐步释放掉分配到的已经使用完毕的资源,然后再去请求新的资源。 破坏“不剥夺”条件 当一个已经持有了一些资源的进程在提出新的资源请求没有得到满足时,必须释放已经保持的所有资源,待以后需要使用时再重新申请。 实现复杂,代价大,演唱进程的周转周期。破坏“循环等待”条件 通过定义资源类型的线性顺序来预防,可将每个资源编号,当一个进程占有编号为i的资源时,那么它下次申请资源只能申请编号大于i的资源。 低效,资源的执行速度变慢,并且可能在没有必要的情况下拒绝资源的访问,降低资源利用率。 避免死锁——在使用前进行判断,只允许不会产生死锁的进程申请资源 死锁避免是利用额外的检验信息,在分配资源时判断是否会出现死锁,只会不会出现死锁的情况下才分配资源。 两种避免办法: 如果一个进程的请求会导致死锁,则不启动该进程;如果一个进程的增加资源请求会导致死锁,则拒绝该申请。 如银行家算法 死锁检测与解除——在检测到运行系统进入死锁,进行恢复 允许系统进入死锁,如果利用死锁检测算法检测出系统出现了死锁,那么,此时就需要对系统采取相应的措施,常用的解除死锁的方法有: 抢占资源:从一个或多个进程中抢占足够数量的资源分配给死锁进程,以解除死锁状态; 终止(或撤销)进程:终止或撤销系统中的一个或多个死锁进程,直至打破死锁状态。

参考 死锁产生的原因和解锁的方法,死锁的四个必要条件和解决办法

5.1 Lock

lock位于concurrent包下,oncurrent包是jdk实现,底层采用CAS机制(一种乐观锁),CAS操作的就是乐观锁,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。 实现原理:两大元素

一个是表示(锁)状态的变量(我们假设0表示没有线程获取锁,1表示已有线程占有锁),该变量必须

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。