待掌握的知识点

 

1.进程与线程的区别算法

2.进程间通讯的方式有哪些网络

3.宏定义定义一个MIN 实现a,b中最小的那个数并发

4.为何C++中调用C编译后的。cpp文件,须要声明“extern C”socket

5.冒泡排序分布式

6.快速排序函数

7.堆排序测试

8.软件测试人员在整个项目开发过程当中各个阶段的做用,测试人员在项目上线后须要作些什么?测试用例是在哪些阶段作的?操作系统

9.操做系统的层次,以及每一层的做用计算机网络

10.strcpy()线程

11.strcmp(),C语言实现

12.最大子序列的和和相应的序列

13.提供差错控制的协议是?

14.IP协议是可靠的么,面向链接的么?

15.单链表逆转

16.aToi, 两个链表第一个公共节点

17.在C++如何调用。dll程序?

18.具备风险管理的软件设计模型是,瀑布?螺旋?增加?。。。

19.进程的3种状态

20.C++或C中的指针使用时须要注意的地方有哪些?

22。计算机网络最大的功能是?

 

 

1.      进程与线程的区别

一。什么是进程

    进程是具备必定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。

    线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。

    系统资源:线程本身基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),可是它可与同属一个进程的其余的线程共享进程所拥有的所有资源。一个线程能够建立和撤销另外一个线程;同一个进程中的多个线程之间能够并发执行。

      进程的做用和定义:进程是为了提升CPU的执行效率,减小由于程序等待带来的CPU空转以及其余计算机软硬件资源的浪费而提出来的。进程是为了完成用户任务所须要的程序的一次执行过程和为其分配资源的一个基本单位,是一个具备独立功能的程序段对某个数据集的一次执行活动。

 

二。线程和进程的区别:

一、 线程是进程的一部分,因此线程有的时候被称为是轻权进程或者轻量级进程。
二、 一个没有线程的进程是能够被看做单线程的,若是一个进程内拥有多个进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。
三、 系统在运行的时候会为每一个进程分配不一样的内存区域,可是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。那就是说,除了CPU以外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。
四、 与进程的控制表PCB类似,线程也有本身的控制表TCB,可是TCB中所保存的线程状态比PCB表中少多了。
五、 进程是系统全部资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。

 

三。线程相对进程的优势

        进程切换比线程切换开销大是由于进程切换时要切页表,并且每每伴随着页调度,由于进程的数据段代码段要换出去,以便把将要执行的进程的内容换进来。原本进程的内容就是线程的超集。并且线程只须要保存线程的上下文(相关寄存器状态和栈的信息)就行了,动做很小。

 

2.进程间通讯的方式有哪些

Linux 进程间通讯的方式主要有:管道pipe, 消息队列,共享存储区,socket套接字,信号,信号量

 

进程间通讯主要包括管道, 系统IPC(Inter-Process Communication,进程间通讯)(包括消息队列,信号,共享存储), 套接字(SOCKET).

管道包括三种:1)普通管道PIPE, 一般有两种限制,一是半双工,只能单向传输;二是只能在父子或者兄弟进程间使用. 2)流管道s_pipe: 去除了第一种限制,能够双向传输. 3)命名管道:name_pipe, 去除了第二种限制,能够在许多并不相关的进程之间进行通信.

识别

系统IPC的三种方式类同,都是使用了内核里的标识符来识别. FAQ1: 管道与文件描述符,文件指针的关系?

答: 其实管道的使用方法与文件相似,都能使用read,write,open等普通IO函数. 管道描述符来相似于文件描述符. 事实上, 管道使用的描述符,文件指针和文件描述符最终都会转化成系统中SOCKET描述符. 都受到系统内核中SOCKET描述符的限制. 本质上LINUX内核源码中管道是经过空文件来实现.

FAQ2: 管道的使用方法?

答: 主要有下面几种方法: 1)pipe, 建立一个管道,返回2个管道描述符.一般用于父子进程之间通信. 2)popen, pclose: 这种方式只返回一个管道描述符,经常使用于通讯另外一方是stdin or stdout; 3)mkpipe:命名管道, 在许多进程之间进行交互.

FAQ3: 管道与系统IPC之间的优劣比较?

答: 管道: 优势是全部的UNIX实现都支持, 而且在最后一个访问管道的进程终止后,管道就被彻底删除;缺陷是管道只容许单向传输或者用于父子进程之间.

系统IPC: 优势是功能强大,能在绝不相关进程之间进行通信; 缺陷是关键字KEY_T使用了内核标识,占用了内核资源,并且只能被显式删除,并且不能使用SOCKET的一些机制,例如select,epoll等.

FAQ4: WINDOS进程间通讯与LINUX进程间通讯的关系?

答: 事实上,WINDOS的进程通讯大部分移植于UNIX, WINDOS的剪贴板,文件映射等均可从UNIX进程通讯的共享存储中找到影子.

FAQ5: 进程间通讯与线程间通讯之间的关系?

答: 由于WINDOWS运行的实体是线程, 狭义上的进程间通讯实际上是指分属于不一样进程的线程之间的通信.而单个进程之间的线程同步问题可归并为一种特殊的进程通讯.它要用到内核支持的系统调用来保持线程之间同步. 一般用到的一些线程同步方法包括:Event, Mutex,信号量Semaphore,临界区资源等.

Linux

的进程间通讯(IPC,InterProcess Communication)通讯方法有管道、消息队列、信号、共享内存、套接口等。

 

3.宏定义定义一个MIN 实现a,b中最小的那个数

#define MIN(a,b)((a)<(b)?(a):(b))

4.为何C++中调用C编译后的。cpp文件,须要声明“extern C”

5.冒泡排序

6.快速排序

7.堆排序

8.软件测试人员在整个项目开发过程当中各个阶段的做用,测试人员在项目上线后须要作些什么?测试用例是在哪些阶段作的?

9.操做系统的层次,以及每一层的做用

10.strcpy()

11.strcmp()C语言实现

12.最大子序列的和和相应的序列

13.提供差错控制的协议是?

14.IP协议是可靠的么,面向链接的么?

Ip地址32 位,不可靠,无链接。惟一的。

15.单链表逆转

16.aToi两个链表第一个公共节点

17.C++如何调用。dll程序?

 

18.具备风险管理的软件设计模型是,瀑布?螺旋?增加?。。。

  具备风险管理的是:螺旋模型

螺旋模型总结了瀑布模型和快速原型模型的特色,增长了风险管理。每到一个阶段都会出一个新版本。

瀑布模型是本阶段的输出做为下一个阶段的输入。

快速原型模型是 在较短的时间内开发出一个原型系统,以便用户确认需求。

喷泉模型:对象驱动的、新型的

 

19.进程的3种状态

   执行态、阻塞态、就绪态

进程的三种基本状态

    进程在运行中不断地改变其运行状态。一般,一个运行进程必须具备如下三种基本状态。

 就绪(Ready)状态

    当进程已分配到除CPU之外的全部必要的资源,只要得到处理机即可当即执行,这时的进程状态称为就绪状态。

 执行(Running)状态
当进程已得到处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。

 阻塞(Blocked)状态
正在执行的进程,因为等待某个事件发生而没法执行时,便放弃处理机而处于阻塞状态。引发进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能知足、等待信件(信号)等。

2.进程三种状态间的转换

一个进程在运行期间,不断地从一种状态转换到另外一种状态,它能够屡次处于就绪状态和执行状态,也能够屡次处于阻塞状态。图3_4描述了进程的三种基本状态及其转换。

 (1) 就绪→执行
处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。

 (2) 执行→就绪
处于执行状态的进程在其执行过程当中,因分配给它的一个时间片已用完而不得不让出处理机,因而进程从执行状态转变成就绪状态。

 (3) 执行→阻塞
正在执行的进程因等待某种事件发生而没法继续执行时,便从执行状态变成阻塞状态。

 (4) 阻塞→就绪
处于阻塞状态的进程,若其等待的事件已经发生,因而进程由阻塞状态转变为就绪状态。

 

例:

题目:某系统的状态转换图如图所示。

 

(1)分别说明引发状态转换一、二、三、4的缘由,并各举一个事件。
(2)为何在转换图中没有就绪到阻塞和阻塞到运行的转换方向?
(3)一个进程的状态变换可以引发另外一个进程的状态变换,说明下列因果变迁是否可能发生,缘由是什么?
(a)3→1(b)2→1(c)3→2(d)3→4(e)4→1

答: (1)
1:就绪->执行, 当前运行进程阻塞,调度程序选一个优先权最高的进程占有处理机;
2:执行->就绪, 当前运行进程时间片用完;
3:执行->阻塞,当前运行进程等待键盘输入,进入了睡眠状态。
4:阻塞->就绪,I/O操做完成,被中断处理程序唤醒。

(2)就绪进程没有占有处理机,也即没有通过运行,其状态就不会改变。
阻塞状态进程唤醒后先要进入就绪队列,才会被调度程序选中,进入了执行状态。

(3)
(a) 3→1: 可能,当前运行进程阻塞,调度程序选一个优先级最高的进程占有处理机。
(b)2→1:可能,当前运行进程优先级降低,调度程序选一个优先级最高的进程占有处理机。
(c)3→2: 不可能,占有CPU的一个进程不能同时进入两个状态;在单CPU的系统中,状态3发生后,cpu没有执行进程,故不会发生状态转换2。
(d)3→4:通常不可能,不相干的两个事件。状态转换3是因为运行进程等待资源而发生的,这并不会使得阻塞队列中的进程获得资源而进入就绪队列。但在Unix中,当系统的0#进程因runin标志而睡眠时,有(在内存)进程睡眠,就会唤醒0#进程,使其进入就绪状态,以便将该进程和在盘交换区就绪进程交换位置。
(e)4→1:通常无关,但当就绪队列为空时,一个进程被唤醒转入就绪队列后,调度程序使该进程占有处理机(可是同一个进程)。

 

20.C++C中的指针使用时须要注意的地方有哪些?

1.指针未初始化。 float * a; a 的值是乱七八糟的数字。能够a=NULL,之后用到时可使用if(a==NULL)来判断指针是否有效,不然不行。或者float* a=new float;

Float b; a=&b;

2.野指针。指针转移。容易形成内存泄露

3.指针越界

4.指向局部变量的指针。注意做用域。

22。计算机网络最大的功能是?

最大功能是:资源共享

其余功能:数据通讯、提升可靠性和可用性(都可做为其余的备用机)、分布式处理

 

计算机网络主要具备以下4个功能。[1]

(1)数据通讯:计算机网络主要提供传真、电子邮件、电子数据交换(EDI)、电子公告牌(BBS)、远程登陆和浏览等数据通讯服务。

(2)资源共享:凡是入网用户均能享受网络中各个计算机系统的所有或部分软件、硬件和数据资源。为最本质功能

(3)提升计算机的可靠性和可用性:网络中的每台计算机均可经过网络相互成为后备机。一旦某台计算机出现故障,它的任务就可由其余的计算机代为完成,这样能够避免在单击状况下,一台计算机发生故障引发整个系统瘫痪的现象,从而提升系统的可靠性。而当网络中的某台计算机负担太重时,网络又能够将新的任务交给较空闲的计算机完成,均衡负载,从而提升了每台计算机的可用性。

(4)分布式处理:经过算法将大型的综合性问题交给不一样的计算机同时进行处理。用户能够根据须要合理选择网络资源,就近快速地进行处理。

相关文章
相关标签/搜索