操作系统的进程、多线程、内存管理、垃圾回收、以及缓冲等方面

一、作业、进程、线程、管程各自的概念?

作业:用户在一次解题或一个事物处理过程中要求计算机系统所做的工作集合,包括用户程序、所需数据、空海命令。

进程:一个程序在一个数据集合上的一次运行过程。

线程:进程中的一个实体,是被系统独立调度和执行的基本单位。

管程:定义了一个数据结构和该数据结构上能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。

二、进程间的通信如何实现?

进程间的通信方式有信号、信号量、消息队列、共享内存,所谓的通信,就是不同进程之间的进行一些接触,这种接触很简单,也有复杂,机制不同,复杂度也不一样,通信是一个广义上的意义,不仅仅指传递一些message,它们的使用方法基本相同。信号与信号量不同,它们都可实现同步和互斥,前者使用信号处理器进行,后者使用P/V进行。消息队列是比较高级的进程间通信方式,一个消息队列可以被多个进程共享,共享消息队列发送的消息除了Message还有一个标志,指定该消息可以被哪个进程或者是哪个类进行接收。


三、产生死锁的4个必要条件?

互斥条件:一个资源每次只能被一个进程使用。(无法被破环)

请求与保持条件:一个进程因请求资源而阻塞时,对已经获得的资源保持不放。

不剥夺条件:一个进程对已获得的资源,在未使用完之前,不能强行剥夺。

循环等待条件:若干进程之间形成了一种首尾相接的循环等待资源关系。

四、进程和线程的区别?

进程是程序的一次执行,线程可以理解为进程中执行的一段程序片段。

进程间是相互独立的,表现在空间内存和上下文环境上;线程运行在进程空间内,一般来讲,进程无法突破进程边界存取其它进程内的存储空间,而线程处于进程空间内,同一进程产生的线程共享同一内存空间。

同一进程中的两端代码不能够同时运行,除非引入线程。

线程时属于进程的,当进程退出时该进程产生的所有线程都会被强制退出并清除,线程占用的资源少于进程。

进程和线程都有优先级。


五、什么是DLL文件,它有几种调用方式?

DLL文件是一种不能单独运行的文件,它允许程序共享执行特殊任务所必需的代码和其它资源。

比较大的程序有许多模块组成,这些模块分别完成相对独立的躬耕,他们彼此写作来完成整个软件系统的工作。

存在一些模块的功能比较通用,在狗仔其它软件系统时任然会被使用,如果将模块的代码都静态编程到应用程序EXE中,增加了应用程序的大小,会占用更多的磁盘空间,消耗更多内存,造成资源浪费,而且每次修改重建时都必须调整编译所有代码,增加了编译过程的复杂度,不利于单元调试。

DLL由全局数据、服务函数和资源组成,在运行时被系统加载到调用进程的虚拟空间中,成为调用进程的一部分。一个DLL在内存中只有一个实例。

静态调用方式:

有编译系统完成对DLL的加载和应用程序结束时的DLL卸载编码。

动态调用

由编程这是哟个API函数加载和卸载DLL来达到调用DLL的目的,使用上复杂,但能更加有效的使用内存,时编程大型应用程序时的重要方式。


六、内存管理

垃圾回收的优点和原理是什么?



JAVA语言中一个显著的特点是引入了垃圾回收机制,使C++的内存管理问题迎刃而解,它使得JAVA程序员编写程序时候不需要考虑内存管理,由于有垃圾回收机制,JAVA中的对象不再有作用域个概念,只有对象的引用才有作用域。垃圾回收有效的防止内存泄漏,有效的使用内存。垃圾回收通常作为一个低级别的线程运行,在不可知的情况下对内存堆中已经死亡或者长时间没有使用的对象进行清除和回收,程序员不能实时调用垃圾回收器对某个对象或所有对象进行垃圾回收。

回收机制有:分代复制垃圾回收、标记垃圾回收、增量垃圾回收。



1 区别同步和异步
一个进程启动的多个不相干线程,它们相互之间关系为异步。

举个简单的例子 就是游戏,游戏会有图像和背景音乐 
图像是由玩家操作的 而背景音乐一般都是循环播放玩家不能操作 
这里的图像和声音就分别是不同的线程   图像一般是主线程 背景音乐是守护线程(守护线程就是主线程结束的时候守护线程也结束)  像这样的组合就是异步线程 两个线程之间没什么关系各干各的 
.至于同步的话指的是多线程同时操作一个数据 这个时候需要对数据添加保护 这个保护就是线程的同步
2 异步机制
临界区、互斥区、事件、信号量四种方式
临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别 
1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。 
2、互斥量:采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享 
3、信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目 
4、事 件: 通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作











  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值