网工第二课

操作系统概述

计算机软件分为系统软件和应用软件,系统软件包含(操作系统,程序设计语言(机器语言,汇编语言,高级语言,4GL语言),数据库);

进程管理

进程状态:

等待(等待某个事件)就绪(等待事件发生)运行(占用cpu)

进程的同步和互斥靠pv操作实现

eg:有s个进程,求pv操作

p操作:s=s-1 if(s>=0) 继续进行 else 进入等待

v操作 s=s+1 if(s<=0) 唤醒等待 else 不管

如何解决资源分配问题:银行家算法

#include<stdio.h>
struct work
{
    int r1, r2, r3;
    int flag=0;
};
int main()
{
    struct work sum;
    struct work a[5];
    struct work b[5];
    int n = 5;
    struct work num;
    scanf(" %d %d %d", &sum.r1, &sum.r2, &sum.r3);//总可分配资源
    for (int i = 0; i < 5; i++)
    {
        scanf("%d %d %d", &a[i].r1, &a[i].r2, &a[i].r3);//最大需要资源,达到可运行
        scanf("%d %d %d", &b[i].r1, &b[i].r2, &b[i].r3);//先有资源
        num.r1 = num.r1 + b[i].r1;//属于已经分配资源
        num.r2 = num.r2 + b[i].r2;
        num.r3 = num.r3 + b[i].r3;
    }
    num.r1 = sum.r1 - num.r1;//未分配资源
    num.r2 = sum.r2 - num.r2;
    num.r3 = sum.r3 - num.r3;
    
    while (n)
    {
        for (int i = 0; i < n; i++)
        {
            if (a[i].falg == 0)
            {
                if (num.r1 >= a[i].r1 - b[i].r1 && num.r2 >= a[i].r2 - b[i].r2 && num.r3 >= a[i].r3 - b[i].r3)
                {
                    num.r1 = num.r1 - (a[i].r1 - b[i].r1) + a[i].r1;
                    num.r2 = num.r2 - (a[i].r2 - b[i].r2) + a[i].r2;
                    num.r3 = num.r3 - (a[i].r3 - b[i].r3) + a[i].r3;
                    n--;
                    a[i].flah = 1;
                    printf("%d->", i);
                }
            }
        }
    }

}

如何解决死锁问题:

1.死锁预防

2.死锁避免

3.死锁控制

4.死锁解除

存储管理

页式存储

app使用->逻辑地址

计算机->内存物理地址

需要将逻辑地址于内存地址进行链接

页面置换算法:

1.先进先出FIFO

2.最佳置换OPT(理想状态,从前往后)

3.最近最少使用LRU(从后往前推算)

(有点类似于cache,会根据使用的多少,然后考虑是否清除)

文件管理

树形目录结构:(Linux叫做根目录,Windows叫做盘符)

绝对地址:从根目录开始到目的地址(很长一串特别的详细)

相对地址:有可能是在同一个小地址下,只需在跳转一次就能到达,如果要返回上一层记得加点

设备管理

1.数据:传输控制方式(数据对象)

2.程序控制方式(cpu->外设)//cpu去访问外设

3.程序中断方式(I/O访问cpu如果cpu正在执行,中断保存)

4.DMA代替cpu部分功能,控制I/O进行,I/O去访问DMA,DMA就进行状态保存,在cpu再去访问DMA

系统开发和项目管理

软件 项目的生命周期于开发模型

1.计划(问题的定义,可行性研究)

2.开发(需求分析,总体设计,详细,编码,测试)

3.运行(维护)

软件开发模型

1.瀑布模型(软件计划,需求分析,软件设计,程序编码,软件测试,运行维护)

需求明确,原型化模型,演化模型,增量化模型’

2.V模型(拔高测试)

需求分析(系统测试所有模块集合)概要设计(集成测试模块于模块之间)详细设计(单元测试单个模块)编码

软件开发:高内聚,低耦合

动态测试:

1.白盒测试:只关心细节,逻辑驱动,路径,结构

2.黑盒测试:只关心输入输出,不关心细节

3.灰盒测试:都关心一丢丢

静态测试:程序员之间debug;

项目管理计划评审表(RERT)最短工期计算=关键路径(开始->结束)最长时间

松弛时间,最晚-最早开工时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值