1. 堆和栈的区别:
  一、堆栈空间分配区别:
  1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
  2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
  二、堆栈缓存方式区别:
  1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
  2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
  三、堆栈数据结构区别:
  堆(数据结构):堆可以被看成是一棵树,如:堆排序;
  栈(数据结构):一种先进后出的数据结构。



2. (1)OSI七层模型

  OSI中的层 功能 TCP/IP协议族

  应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet

  表示层 数据格式化,代码转换,数据加密没有协议

  会话层 解除或建立与别的接点的联系 没有协议

  传输层 提供端对端的接口 TCP,UDP

  网络层 为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP

  数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU

  物理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2

(2)TCP/IP五层模型的协议

  物理层:中继器、集线器、还有我们通常说的双绞线也工作在物理层

  数据链路层:网桥(现已很少使用)、以太网交换机(二层交换机)、网卡(其实网卡是一半工作在物理层、一半工作在数据链路层)

  网络层:路由器、三层交换机

  传输层:四层交换机、也有工作在四层的路由器

(3)TCP/UDP协议

  TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送; 而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要 有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系 统)、TFTP(通用文件传输协议/简单文件传输协议)等.

  TCP/IP协议与低层的数据链路层和物理层无关,这也是TCP/IP的重要特点。

附表:tcp协议和udp协议的差别

 

TCP

UDP

是否连接

面向连接

面向非连接

传输可靠性

可靠

不可靠

应用场合

传输大量的数据,对可靠性要求较高的场合

传送少量数据、对可靠性要求不高的场


速度




3. 概念:

无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求 进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。

2、进程的四个基本属性:


 

  2.多个不同的进程可以包括相同的程序


 

  3.三种基本状态 它们之间可进行转换


 

  4.

并发性 并发执行的进程轮流占用处理器



3、进程的三种基本状态:


1.等待态:等待某个事件的完成;

 

  2.就绪态:等待系统分配处理器以便运行;


 

  3.运行态:占有处理器正在运行。


 

  运行态→等待态 往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的。


 

  等待态→就绪态 则是等待的条件已满足,只需分配到处理器后就能运行。


 

  运行态→就绪态 不是由于自身原因,而是由外界原因使运行状态的进程让出处理器,这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器等。


 


4、进程调度的方式:

非剥夺方式


  分派程序一旦把 处理机分配给某进程后便让它一直运行下去,直到进程完成或发生 

某事件而阻塞时,才把处理机分配给另一个进程。



剥夺方式


  当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的 处理机,将之分配给其它进程。剥夺原则有:优先权原则、短进程优先原则、 时间片原则。

 

  例如,有三个进程P1、P2、P3先后到达,它们分别需要20、4和2个单位时间运行完毕。


 

  假如它们就按P1、P2、P3的

顺序执行,且不可剥夺,则三进程各自的

周转时间分别为20、24、


 

  26个单位时间,平均周转时间是23.33个时间单位。


 

  假如用时间片原则的剥夺调度方式,可得到:


 

  可见:P1、P2、P3的周转时间分别为26、10、6个单位时间(假设时间片为2个单位时间),平均周转时间为14个单位时间。


 


5、进程调度算法:

1、先进先出算法(FIFO)


  算法总是把 处理机 分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便一直执行下去,直到该进程完成或阻塞时,才释放处理机。

 

  例如,有三个进程P1、P2和P3先后进入就绪 队列

,它们的执行期分别是21、6和3个单位时间,

 

  执行情况如下图:

 

  对于P1、P2、P3的 周转时间

为21、27、30,平均周转时间为26。

 

  可见,FIFO算法服务质量不佳,容易引起作业用户不满,常作为一种辅助 调度算法


 


2、最短CPU运行期优先调度算法(SCBF--Shortest CPU Burst First)


 

  该算法从就绪队列中选出下一个“CPU执行期最短”的进程,为之分配处理机。

 

  例如,在就绪队列中有四个进程P1、P2、P3和P4,它们的下一个执行 

进程调度

期分别是16、12、4和3个单位时间,执行情况如下图:

 

  P1、P2、P3和P4的周转时间分别为35、19、7、3,平均周转时间为16。

 

  该算法虽可获得较好的调度性能,但难以准确地知道下一个CPU执行期,而只能根据每一个进程的执行历史来预测。


3、时间片轮转法:


  前几种算法主要用于 批处理系统中,不能作为 分时系统中的主 调度算法,在分时系统中,都采用 时间片轮转法。

 

  简单轮转法:系统将所有就绪进程按FIFO规则排队,按一定的时间间隔把

处理机分配给队列中的进程。这样,就绪队列中所有进程均可获得一个时间片的处理机而运行。



4、多级反馈队列:


 

  多级 队列

方法:将系统中所有进程分成若干类,每类为一级。 多级反馈 队列

方式是在系统中设置多个就绪队列,并赋予各队列以不同的优先权。


6、引起进程调度的原因:


 

  (1)正在执行的进程执行完毕。这时,如果不选择新的就绪进程执行,将浪费

处理机资源。


 

  (2)执行中进程自己调用阻塞原语将自己阻塞起来进入睡眠等状态。


 

  (3)执行中进程调用了P

原语操作,从而因资源不足而被阻塞;或调用了v原语操作激活了等待资源的进程

队列


 

  (4)执行中进程提出I/O请求后被阻塞。


 

  (5)在

分时系统中时间片已经用完。


 

  (6)在执行完

系统调用等系统程序后返回用户进程时,这时可看作系统进程执行完毕,从而可调度选择一新的用户进程执行。


 

  以上都是在不

可剥夺方式下的引起进程调度的原因。在CPU执行方式是可剥夺时.还有


 






 

TCP

UDP

是否连接

面向连接

面向非连接

传输可靠性

可靠

不可靠

应用场合

传输大量的数据,对可靠性要求较高的场合

传送少量数据、对可靠性要求不高的场 景

速度