1.什么是 *** 作系统?
- *** 作系统,简称OS,是管理计算机软件和硬件资源的程序,是计算机的基石。
- *** 作系统本质上是一个运行在计算机上的软件程序,用于管理计算机硬件和软件资源。
- *** 作系统的存在屏蔽了硬件层的复杂性。
- *** 作系统的内核(Kernel)是 *** 作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。内核是连接应用程序和硬件的桥梁,决定这系统的性能和稳定性。
2,什么是系统调用?
根据进程访问资源的特点,把进程在系统上的运行可以分为两个级别:
- 用户态:用户态运行的进程或程序可以直接读取用户程序的数据
- 系统态:系统态运行的进程或程序几乎可以访问计算机的任何资源,不受闲置
在我们运行的用户程序中,凡事预系统态级别的资源有关的 *** 作,都必须用过系统调用方式系统提出服务请求,并由 *** 作系统代为完成。
这些系统调用功能大致可分为如下几类:
- 设备管理。完成设备的请求或释放,以及设备启用功能
- 文件管理。完成文件的读、写、创建及删除功能。
- 进程控制。完成进程的创建、撤销、阻塞及唤醒功能
- 进程通信。完成进程之间的信息传递或信号传递等功能
- 内存管理。完成内存的分配、回收以及获取作业占用内存区大小及地址等功能
3.进程间的通信常见的有哪几种方式?
- 管道/匿名管道:父子线程或者兄弟线程之间的通信
- 有名管道:遵循先进先出。以磁盘文件的方式存在,可以实现本机任意两个进程通信
- 信号:用于通知接收进程的某个时间已经发生。
- 信息队列:信息队列客服了信号承载信号量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点
- 信号量:是一个计数器,用于多线程对共享数据的访问,信号量的意图在于进程间同步。这种通信方式主要用于解决与同步相关的问题并避免竞争条件。
- 共享内存:使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新。这是最有用的进程间通信方式。
- 套接字:主要用于在客户端和服务器之间通过网络进行通信。
4.线程间的同步方式有哪些呢
线程同步是两个或多个共享关键资源的线程的并发执行。应该同步线程以避免关键的资源使用冲突。 *** 作系统一般有下面三种线程同步的方式:
- 互斥量(Mutex):采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。
- 信号量(Semphares):它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程量。
- 事件(Event):Wait/Notify:通过通知 *** 作的方式来保持线程同步、还可以方便的实现多线程优先级的比较 *** 作
5.你知道 *** 作系统中进程的调度算法有哪些呢?
- 先到先服务(FCFS)调度算法
- 短作业优先(SJF)的调度算法
- 时间片轮转调度算法
- 多级反馈队列调度算法:既能高优先级的作业得到响应又能使短作业迅速完成
- 优先级调度
6. *** 作系统的内存管理主要做什么?
*** 作系统的内存管理主要负责内存的分配与回收(malloc函数:申请内存,free函数:释放内存),另外地址转换也就是逻辑地址转换成相应的物理地址等功能也是 *** 作系统内存管理做的事情。
7. *** 作系统的内存管理机制了解吗?内存管理有几种方式?
简单分为连续分配管理方式和非连续分配管理方式这两种。
连续分配管理方式是指一个用户程序分配一个连续的内存空间,常见的如快式管理
非连续分配管理方式语序一个程序使用的内存分布在离散或者说不相邻的内存中,常见的如页式管理和段式管理。
段页式管理机制,结合了段式管理和页式管理的优点。简单来说就是把主存先分成若干块,每个段又分成若干页。
8.页表管理机制中有两个很重要的概念:块表和多级页表,这两个东西分别解决了页表管理中很重要的两个问题。简单介绍一下。
在分页内存管理中,很重要的两点就是:
- 虚拟地址到物理地址的转换要快。
- 解决虚拟地址空间大,页表也会很大的问题
总结:为了提高内存的空间性能,提出了多级页表的概念;但是提到空间性能是以浪费时间性能为基础的,因此为了补充损失的时间性能,提出了快表的概念。不论是快表还是多级页表实际上都要利用了程序的局部性原理。
9.分页机制和分段机制有哪些共同点和区别呢?
共同点:
- 两者都是为了提高内存利用率,较少内训碎片
- 两者都是离散分配内存方式。但是每个页和段中的内存是连续的
区别:
- 页的大小事固定的,有 *** 作系统决定;而段的大小不固定,取决于我们当前运行的程序
- 分页仅仅是为了满足 *** 作系统内存管理需求,而段是逻辑信息的单位,在程序中可以体现为代码段,数据段,能够更好的满足客户的需要。
现代处理器使用的是一种称为虚拟寻址的寻址方式,使用虚拟寻址,CPU需要将虚拟内存地址翻译成物理地址,这样才能访问到真是的物理内存。实际上完成虚拟地址转换为物理地址转换的硬件是CPU中含有一个被称为内存管理单元的硬件。
如果直接把物理地址暴露出来的话会带来严重的问题,比如可能对 *** 作系统造成伤害以及给同时运行多个程序造成困难。
通过虚拟地址访问有以下优势:
- 程序可以使用一系列相邻的虚拟地址来访问物理内存中不相邻的内存缓冲区
- 程序可以使用一系列虚拟地址来访问大于可用物理内存的内存缓冲区,
- 不同进程使用的虚拟地址彼此隔离。一个进程的代码无法更改另一进程或 *** 作系统使用的物理内存。
11.什么是虚拟内存?
虚拟内存是计算机系统内存管理的一种技术,我们可以手动设置自己电脑的虚拟内存。虚拟内存的重要意义是它定义了一个连续的虚拟地址空间,并把内存扩展到硬盘空间。
12.要想更好的理解虚拟内存技术,必须知道计算机中的著名的局部性原理。
- 时间局部性:如果程序中的某条指令一旦执行,不久之后该指令可能再次执行;如果某数据被访问过,不久之后该数据可能再次被访问。产生时间局部性的典型原因,是由于在程序中存在着大量的循环 *** 作。
- 空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定范围之内,这是因为指令通常是顺序存放和顺序执行的。
13.虚拟内存的技术实现呢?
虚拟内存的实现需要建立在离散分配的内存管理方式的基础上。有三中方式:
- 请求分页存储管理:建立在分页管理之上,为了支持虚拟存储器功能而增加了请求调页和页面置换功能。
- 请求分段存储管理:建立在分段存储管理之上,增加了请求调段功能、分段置换功能。
- 请求段页式存储管理
14.页面置换算法的作用?常见的页面置换算法有哪些?
地址映射过程中,若页面中发现所要访问的页面不在内存中,则发生缺页中断。
缺页中断:就是访问的页不存在,需要 *** 作系统将其调入主存后再进行访问。
当发生缺页中断的时候,如果当前内存中并没有空闲的页面, *** 作系统就必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。
- OPT页面置换算法(最佳页面置换算法)
- FIFO页面置换算法(先进先出页面置换算法)
- LRU页面置换算法(最近最久未使用页面置换算法)
- LFU页面置换算法(最少使用页面置换算法)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)