最近遇到的比较重要的,面试可能会用到的知识
2016-04-07 15:53
411 查看
操作系统方面
一:进程和线程的区别?
进程是程序执行的实体,线程是进程内的一条执行路径,线程有自己的栈和局部变量,但没有单独的地址空间。
线程不能够独立执行,从操作系统的角度来看,线程并不是被看做独立的应用,来实现进程的调度和资源分配。
线程的执行过程与进程不同,每个独立的线程有一个程序运行的入口,顺序执行序列和出口。
线程的创建和切换比进程来说消耗的资源少,可以说是轻量级的进程。进程在执行过程中拥有独立的内存单元,而多个线程共享内存。
(参考了的资料是博客http://blog.csdn.net/mxsgoden/article/details/8821936)。
二:死锁的必要条件以及怎么处理死锁
死锁的必要条件有三个1.互斥 2. 占有且等待 3.不允许抢占资源。4.循环等待(加上这个就是充分必要条件了)
处理死锁可以预防避免和检测;预防死锁可以通过打破死锁的三个必要条件,避免死锁可以通过银行家算法来避免。
一旦检测死锁时,最简单的就是取消所有与死锁有关的进程的,收回所有资源,。
或者是让进程回退到死锁未发生前,但是有可能会再次发生死锁。或者当死锁发生时由操作系统进行抢占该资源。
三:进程的几种状态。
简单的有三状态的进程模型,即就绪,执行,阻塞。二者转换关系如下图
还有五状态的进程模型
新建, 就绪 , 运行,退出,阻塞。
在这基础之上还有更为复杂的进程状态,添加了挂起状态的进程模型。
四:IPC几种通信方式
以linux为例,进程间通讯的方式有1.管道(包含有名管道和无名管道)2.信号3.消息队列4.共享内存(多个进程可以共同访问同一内存空间,最快的ipc形式)5.信号量6.套接口
五:windows、linux内存管理方式
六:什么是虚拟内存,虚拟地址,逻辑地址,线性地址,物理地址的区别?
虚拟内存是使应用程序认为它拥有连续可用的内存空间,但是事实上,通常是被分割成不同的物理内存,而且还有可能存储在磁盘上,只在需要(发生缺页中断时被调入内存)时进行数据交换。
逻辑地址 是指与段相关的偏移地址部分,也可以理解为在程序中取地址所得到的值。是相对与当前程序的数据段的地址,只有在实模式下逻辑地址才等同于物理地址。逻辑地址是相对与进程而言的。逻辑地址是段标识和段内偏移量偏移量
4000
组成的。
线性地址 是逻辑地址通过查询段表,将逻辑地址转化后的结果,如果没有分页机制那么转化后的线性地址就是物理地址,如果具有分页机制那么还有通过查询页表和页目录进行最后的线性地址到物理地址的转换。
虚拟地址 线性地址也叫作虚拟地址,当段基地址总是0时,逻辑地址在数值上等于线性地址也就等同与虚拟地址。
物理地址则是真实的内存条上的地址编号。
一:进程和线程的区别?
进程是程序执行的实体,线程是进程内的一条执行路径,线程有自己的栈和局部变量,但没有单独的地址空间。
线程不能够独立执行,从操作系统的角度来看,线程并不是被看做独立的应用,来实现进程的调度和资源分配。
线程的执行过程与进程不同,每个独立的线程有一个程序运行的入口,顺序执行序列和出口。
线程的创建和切换比进程来说消耗的资源少,可以说是轻量级的进程。进程在执行过程中拥有独立的内存单元,而多个线程共享内存。
(参考了的资料是博客http://blog.csdn.net/mxsgoden/article/details/8821936)。
二:死锁的必要条件以及怎么处理死锁
死锁的必要条件有三个1.互斥 2. 占有且等待 3.不允许抢占资源。4.循环等待(加上这个就是充分必要条件了)
处理死锁可以预防避免和检测;预防死锁可以通过打破死锁的三个必要条件,避免死锁可以通过银行家算法来避免。
一旦检测死锁时,最简单的就是取消所有与死锁有关的进程的,收回所有资源,。
或者是让进程回退到死锁未发生前,但是有可能会再次发生死锁。或者当死锁发生时由操作系统进行抢占该资源。
三:进程的几种状态。
简单的有三状态的进程模型,即就绪,执行,阻塞。二者转换关系如下图
还有五状态的进程模型
新建, 就绪 , 运行,退出,阻塞。
在这基础之上还有更为复杂的进程状态,添加了挂起状态的进程模型。
四:IPC几种通信方式
以linux为例,进程间通讯的方式有1.管道(包含有名管道和无名管道)2.信号3.消息队列4.共享内存(多个进程可以共同访问同一内存空间,最快的ipc形式)5.信号量6.套接口
五:windows、linux内存管理方式
六:什么是虚拟内存,虚拟地址,逻辑地址,线性地址,物理地址的区别?
虚拟内存是使应用程序认为它拥有连续可用的内存空间,但是事实上,通常是被分割成不同的物理内存,而且还有可能存储在磁盘上,只在需要(发生缺页中断时被调入内存)时进行数据交换。
逻辑地址 是指与段相关的偏移地址部分,也可以理解为在程序中取地址所得到的值。是相对与当前程序的数据段的地址,只有在实模式下逻辑地址才等同于物理地址。逻辑地址是相对与进程而言的。逻辑地址是段标识和段内偏移量偏移量
4000
组成的。
线性地址 是逻辑地址通过查询段表,将逻辑地址转化后的结果,如果没有分页机制那么转化后的线性地址就是物理地址,如果具有分页机制那么还有通过查询页表和页目录进行最后的线性地址到物理地址的转换。
虚拟地址 线性地址也叫作虚拟地址,当段基地址总是0时,逻辑地址在数值上等于线性地址也就等同与虚拟地址。
物理地址则是真实的内存条上的地址编号。
相关文章推荐
- 应用领航:盘点那些年我们一起追过的OS
- 无奇不有!盘点各国自己开发的操作系统
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- 可自定义oem的萝卜家园 Ghost XP 新春装机版 V200801 下载
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- C#实现判断操作系统是否为Win8以上版本
- C#常见算法面试题小结
- js获取本机操作系统类型的两种方法
- Linux操作系统添加新硬盘方法
- java如何获取本地操作系统进程列表
- Linux rdesktop操作系统下远程登录Windows XP桌面
- 32位操作系统认出超出4G内存的方法
- Linux rpm tar 操作系统下软件的安装与卸载方法
- JavaScript 获取用户客户端操作系统版本
- jsp 获取客户端的浏览器和操作系统信息
- php 面试碰到过的问题 在此做下记录
- asp.net 面试+笔试题目第1/2页
- Windows 操作系统的安全设置
- php判断当前操作系统类型