知识点回顾

来源:互联网 发布:临沂拓普网络 编辑:程序博客网 时间:2024/05/16 01:41

1、进程和线程的区别:
进程是系统进行资源分配和调度的独立单位;
线程是进程的一个实体,是CPU调度和分派的基本单位,是比进程更小能独立运行的基本单位。
线程本身基本上不拥有系统资源,只拥有一点在运行中必不可少的资源,但可与同属于一个进程的其他线程共享进程所拥有的全部资源

处于同一进程的线程共享哪些资源:
进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。

也拥有个性,让线程直接实现并发性:
1)线程ID
2)寄存器组的值
3)线程的堆栈
4)错误返回码
5)线程的信号屏蔽码
6)线程的优先级

2、死锁的必要条件:
互斥:一个资源每次只能被一个进程使用
请求和保持:一个进程因请求资源而被阻塞时,对已获得的资源保持不放
不剥夺:进程已获得的资源,在未使用完之前不能被强行剥夺
循环等待:若干进程间形成一种头尾相接循环等待资源关系

3、windows内存管理方式:
页式管理:
基本原理是将各进程的虚拟空间划分为若干个长度相等的页;页式管理把内存空间按照页的大小划分成片或者页面,然后把页式虚拟地址与内存地址建立一一对应的页表;并用相应的硬件地址变换机构来解决离散地址变换问题。页式管理采用请求调页或预调页技术来实现内外存存储器的统一管理。其优点是没有外碎片,每个内碎片不超过页的大小。缺点是,程序全部装入内存,要求有相应的硬件支持。例如地址变换机构缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。这增加了机器成本,增加了系统开销。

段式管理:
基本思想是把程序按照内容或过程函数关系分段,每段都有自己的名字。
一个用户作业或进程所包括的段对应一个二维线形虚拟空间,也就是一个二维虚拟存储器。段式管理程序以段为单位分配内存,然后通过地址映射机构把段式虚拟地址转换为实际内存物理地址。其优点是可以分别编写和编译,可以针对不同类型的段采用不同的保护,可以按段为单位来进行共享,包括通过动态链接进行代码共享。缺点是会产生碎片。

段页式管理:
为了实现段页式管理,系统必须为每个作业或进程建立一张段表以管理内存分配与释放、缺段处理等。另外由于一个段又被划分成了若干个页。每个段必须建立一张页表以把段中的虚页变换成内存中的实际页面。显然与页式管理时相同,页表中也要有相应的实现缺页中断处理和页面保护等功能的表项。段页式管理的段式管理与页式管理方案结合而成的所以具有他们两者的优点。但反过来说,由于管理软件的增加,复杂性和开销也就随之增加了。另外需要的硬件以及占用的内存也有所增加。使得速度降下来。

4、进程的几种状态:
(1) 运行态(Run): 进程占有处理机资源,正在运行。 显然,在单处理机系统中任一时刻只能有一个进程处于此种状态;

(2) 就绪态(Ready): 进程本身具备运行条件,但由于处理机的个数少于可运行进程的个数,暂未投入运行。 即相当于等待处理机资源

(3) 等待态(Wait): 也称挂起态(Suspended)、封锁态(Blocked)、睡眠态(Sleep)。 进程本身不具备运行条件,即使分给它处理机也不能运行。

相互转换:
当一个就绪进程获得处理机时,其状态由就绪变为运行;
当一个运行进程被剥夺处理机时,如用完系统分给它的时间片、出现更高优先级别的其它进程,其状态由运行变为就绪;
当一个运行进程因某事件受阻时,如所申请资源被占用、启动I/O传输未完成,其状态由运行变为等待;
当所等待事件发生时,如得到申请资源、I/O传输完成,其状态由等待变为就绪。

5、IPC几种通信方式
管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

6、虚拟内存
是相对于物理内存而言的抽象描述。操作系统都提供了一种内存管理的抽像,即虚拟内存(virtual memory)。进程使用虚拟内存中的地址,由操作系统协助相关硬件,把它“转换”成真正的物理地址。

逻辑地址(logical address):指的是机器语言指令中,用来指定一个操作数或者是一条指令的地址。例如,要调用某个函数A,代码不是call A,而是call 0x0811111111。连接器为A分配的0x08111111这个地址就是逻辑地址。
线性地址(linear address)或虚拟地址(virtual address):
跟逻辑地址类似,它也是一个不真实的地址,如果逻辑地址是对应的硬件平台段式管理转换前地址的话,那么线性地址则对应了硬件页式内存的转换前地址。

CPU将一个虚拟内存空间中的地址转换为物理地址,需要进行两步:
1)首先将给定一个逻辑地址(其实是段内偏移量,这个一定要理解!!!),CPU要利用其段式内存管理单元,先将为个逻辑地址转换成一个线程地址。
2)再利用其页式内存管理单元,转换为最终物理地址。

7、常见http错误码
200 - 服务器成功返回网页
404 - 请求的网页不存在
503 - 服务不可用

2xx (成功):表示成功处理了请求的状态代码。
3xx (重定向):表示要完成请求,需要进一步操作。 通常这些状态代码用来重定向。
4xx(请求错误):这些状态代码表示请求可能出错,妨碍了服务器的处理。
  400 (错误请求) 服务器不理解请求的语法。
  401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
  403 (禁止) 服务器拒绝请求。
  404 (未找到) 服务器找不到请求的网页。
  408 (请求超时) 服务器等候请求时发生超时。
5xx(服务器错误): 这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

8、OSI与TCP/IP协议对比:
OSI七层模型        TCP/IP五层模型
应用层
表示层
会话层             应用层
传输层            传输层
网络层             网络层
数据链路层          数据链路层
物理层             物理层

0 0