基础知识复习

本文涵盖了计算机基础知识的多个方面,包括软件工程、计算机基础、数据库、计算机网络、计算机组成原理、编译原理和云计算。重点讲解了软件工程中的概念如进程、线程和调度,数据库事务的ACID特性,HTTP协议的工作原理,以及TCP和UDP的区别。同时,介绍了冯·诺依曼体系结构和编译原理的基础知识,最后提到了云计算的层次架构。
摘要由CSDN通过智能技术生成

Table of Contents

 

软件工程

计算机基础

数据库

计算机网络

计算机组成原理

编译原理

云计算


软件工程

软件工程

  1. 什么是软件工程

  2. 研究软件和研究软件工程有没有什么区别

软件测试

  1. 用英文解释一下什么事软件测试,必须英文

计算机基础

操作系统

死锁

多个进程因循环等待资源而造成无法执行的现象,造成系统资源的极大浪费,无法释放

  1. 死锁原因(AB互相索取资源)

  2. 死锁条件(四项)

    1. 互斥使用:进程对资源进行排他性使用,一段时间内某资源只由一个进程占用。如果还有其他进程请求资源,则请求者只能等待,直到占用资源的进程用毕释放

    2. 不可抢占

    3. 请求和保持:该进程已经保持了至少一个资源,但是提出新的请求,而请求资源已经被占用,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。

    4. 循环等待:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。

  3. 处理器管理。包括进程控制、进程互斥等。

  4. 存储管理。包括分区存储、页式存储等。

  5. 文件管理。包括文件目录、文件系统的实现等。

  6. 操作系统线程跟进程的区别等(操作系统的问题比较爱问)

  7. 多任务

    1. 多道程序:CPU资源比较珍贵,为了让CPU得到更好的利用,把暂时无需使用的CPU用于其他正在等待CPU资源的程序,称为多道程序。缺点是不分轻重缓急

    2. 分是系统:改进躲到程序,使得每个程序运行一段时间就主动让出CPU资源

    3. 多任务系统:操作系统从最底层接管了所有的硬件资源,所有应用程序在操作系统之上以进程的方式运行,每个进程拥有自己独立的地址空间,相互隔离。CPU统一由操作系统进行分配

 

进程

  1. 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。

  2. 第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。

    1. 文本区域存储处理器执行的代码;

    2. 数据区域存储变量和进程执行期间使用的动态分配的内存;

    3. 堆栈区域存储着活动过程调用的指令和本地变量。

  3. 第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。

  4. 基本状态:

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

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

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

  5. 状态转换:

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

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

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

    4. 就绪态→运行态 系统按某种策略选中就绪队列中的一个进程占用处理器,此时就变成了运行态

  6. 进程调度

    1. 调度种类:高级、中级和低级调度作业从提交开始直到完成,往往要经历下述三级调度:

      1. 高级调度:(High-Level Scheduling)又称为作业调度,它决定把后备作业调入内存运行;

      2. 中级调度:(Intermediate-Level Scheduling)又称为在虚拟存储器中引入,在内、外存对换区进行进程对换。

      3. 低级调度:(Low-Level Scheduling)又称为进程调度,它决定把就绪队列的某进程获得CPU;

    2. 调度算法:

      1. FIFO或First Come, First Served (FCFS),调度的顺序就是任务到达就绪队列的顺序。

      2. Shortest Job First (SJF),最短的作业(CPU区间长度最小)最先调度。SJF可以保证最小的平均等待时间。

      3. 优先权调度,每个任务关联一个优先权,调度优先权最高的任务。注意:优先权太低的任务一直就绪,得不到运行,出现“饥饿”现象。

      4. Round-Robin(RR),设置一个时间片,按时间片来轮转调度(“轮叫”算法),优点: 定时有响应,等待时间较短;缺点: 上下文切换次数较多;

      5. 多级队列调度:

        1. 按照一定的规则建立多个进程队列

        2. 不同的队列有固定的优先级(高优先级有抢占权)

        3. 不同的队列可以给不同的时间片和采用不同的调度方法

      6. 多级反馈队列:在多级队列的基础上,任务可以在队列之间移动,更细致的区分任务。 可以根据“享用”CPU时间多少来移动队列,阻止“饥饿”。

  7. 本地进程通信:

    1. 消息传递(管道、FIFO、消息队列)

    2. 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量)

    3. 共享内存(匿名的和具名的)

    4. 远程过程调用(Solaris门和Sun RPC)

 

线程

  1. 多进程解决了前面提到的多任务问题。然而很多时候不同的程序需要共享同样的资源(文件,信号量等),如果全都使用进程的话会导致切换的成本很高,造成 CPU 资源的浪费。于是就出现了线程的概念。

  2. 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。

    1. 轻型实体 线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。线程的实体包括程序、数据和TCB。线程是动态概念,它的动态特性由线程控制块TCB(Thread Control Block)描述。

    2. 在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。

    3. 可并发执行。 在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。

    4. 共享进程资源。在同一进程中的各个线程,都可以共享该进程所拥有的资源

      1. 所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;

      2. 问进程所拥有的已打开文件、定时器、信号量等。线程之间互相通信不必调用内核。 

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

  3. 本地进程间通信的方式:

    1. 消息传递(管道、FIFO、消息队列)

    2. 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量)

    3. 共享内存(匿名的和具名的)

    4. 远程过程调用(Solaris门和Sun RPC)

进程和线程的区别

a.地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

b.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

c.调度和切换:线程上下文切换比进程上下文切换要快得多。

d.在多线程OS中,进程不是一个可执行的实

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值