linux操作系统相关知识

有关线程死锁的问题?
死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们将无法推进下去。
产生死锁的4个必要条件:
1.互斥条件:一个资源每次只能被一个进程使用
2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放
3.不剥夺条件:进程已获得资源,在未使用完之前,不能强行剥夺
4.循环等待条件:若干进程之间形成一种头尾相接的循环等待关系

 

请描述进程和线程的区别?
进程是程序的一次执行。线程可以理解为进程中执行的一段程序片。在一个多任务环境中下面的概念可以帮助我们理解两者间的差别
进程间是独立,这表现在内存空间,上下文环境上;线程运行在进程空间内。一般来讲(不使用特殊技术),线程无法突破进程边界存取其他进程内的存储空间;而线程由于处于进程空间内,所有同一进程所产生的线程共享同一内存空间。
同一进程中的两段代码不能够同时执行,除非引入线程。
线程是属于进程,当进程退出时该进程所产生的线程都会被强制退出并清除。线程占用的资源要少于进程所占的资源。进程和线程都可以有优先级。


进程间通信的方式有?
进程间的通信方式有管道,socket,消息队列,信号,信号量,共享内存
Linux多线程同步的几种方式 ?
互斥量,条件变量,信号量,读写锁,自旋锁

临界区,互斥量的区别?
临界区实现线程同步,实现互斥
互斥量用于线程和进程,实现互斥

互斥锁和自旋锁区别?
对于互斥锁如果资源已被占用,资源申请者只能进入睡眠状态。但自旋锁不会引起调用者睡眠,如果自旋锁已被别的单位保持,调用者就一直循环检测自旋锁是否已经被释放

程序和进程的区别
  程序:计算机指令的集合,它以文件的形式存储在磁盘上,程序是静态实体。不使用系统资源
  进程:进程是进程实体的运行过程,是一个程序在其自身的地址空间中的一次执行活动,是系统进行资源分配和调度的一个独立单位。需要使用系统资源(进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源)

作业调度的算法:
  1:先来先服务算法(FSFS)最简单的调度算法,既可用于作业调度也可用于进程调度,系统按照作业到达的先后顺序进行调度,或者是优先考虑在系统中等待时间最长的作业
  2:短作业优先调度算法(SJF)实际情况短作业占有比例很大,为了使他们比长作业优先执行,而产生了短作业优先的调度算法 ,作业越短优先级越高。缺点:是必须知道作业的运行时间,对长作业不利,人机无法实现交互,未完全考虑作业的紧迫程度
  3:优先级调度算法(PSA)优先级:对于先来先服务算法,作业的等待时间就是他的优先级,等待时间越长优先级越高,对于短作业优先级作业的长短就是他的优先级。在优先级算法中,基于作业的紧迫程度。

分页存储管理
用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。为了能在内存中找到每个页面对应的物理块,系统为每个进程建立一张页表,用于记录进程逻辑页面与内存物理页面之间的对应关系。页表的作用是实现从页号到物理块号的地址映射,地址空间有多少页,该页表里就登记多少行,且按逻辑页的顺序排列。

分段存储管理
作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。每个段都有自己的名字,每个段都从0开始编址,并采用一段连续的地址空间。段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。整个作业的地址空间由于是分成多个段,其逻辑地址由段号(段名)和段内地址所组成

分页和分段的区别:
共同点:两者都采用离散分配方式,且都地址映射机构来实现地址的转换    
不同点:
1:页是信息的物理单位采用分页存储管理方式是为了实现离散分配方法。提高内存的利用率,采用分段目的主要在于能更好的满足用户的需求
2:页的大小固定且有系统决定,在采用分页存储管理方式中直接由硬件实现。而段的大小不固定,决定于用户所编写的程序

3:分页的地址空间是一维的,分页完全是系统完全是行为,分段系统中是二维的。
段页式存储管理方式
基本原理是分段和分页相结合,其地址结构由:段号、段内页号、页内地址三部分组成。在段页式系统中获得一条指令需要三次访问内存,第一次访问内存中的段表,第二次访问内存中的页表,第三次访问内存中的数据。

MMU,全称内存管理单元,一般是CPU里的硬件电路,也可单独集成电路,主要功能是把虚拟地址转换为物理地址。通过段机制和页机制完成转换。MMU可以完成地址转换,通过建立页表,把虚拟地址通过页表查找,得到最终的物理地址。例如,当需要访问内存中的一个数据,通过这个数据的虚拟地址查找页表,一旦在页表中找到(hit),就通过找到的物理地址寻址到内存中的数据。如果页表中没有找到(miss),表示页表中没有建立这个数据虚拟地址到物理地址的映射,通过缺页异常,建立这个页表映射项

TLB,俗称快表,因为它确实快。TLB是MMU的一部分,实质是cache,它所缓存的是最近使用的数据的页表项(虚拟地址到物理地址的映射)。他的出现是为了加快访问数据(内存)的速度,减少重复的页表查找。当然它不是必须要有的,但有它,速度就更快。

TLB刷新与上下文切换
当进程地址空间进行了切换,比如现在是进程1运行,TLB中放的是进程1的相关数据的地址;突然切换到进程2,TLB中原有的数据不是进程2相关的,此时TLB需要刷新数据。怎么刷新数据?
目前两种方法:一,全部刷新。二,部分刷新。
全部刷新很简单,但花销大,很多不必刷新的数据也进行刷新,增加了无畏的花销。
部分刷新是根据标志位,刷新需要刷新的数据,保留不需要刷新的数据

你可能感兴趣的:(linux,计算机系统/结构/组成)