2022-2023-1 20221308《计算机基础与程序设计》第九周学习总结
班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP
作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK09
作业目标:学习计算机科学概论第10,11章,《C语言程序设计》第8章
作业正文:https://www.cnblogs.com/lzw952755/p/16842201.html
学习目标
·操作系统责任
·内存与进程管理
·分时系统
·CPU调度
·文件、文件系统
·文件保护
·磁盘调度
学习资源
·教材
·阅读 「反作弊」:任何时候发现同学们有抄袭作业,抄袭代码的情况,即时课程总成绩清零
学习任务
·加入云班课,参考本周学习资源
自学教材
·计算机科学概论第10,11章 并完成云班课测试
·《C语言程序设计》第8章并完成云班课测试
教材学习内容总结:
1.CPU调度:
Shortest-Job-First(SJF)调度算法(最短作业优先算法)
CPU Burst time必须很准确,才能确定这种算法。然而实际情况下基本不可能预估准确时间。(预先通报是不可能做到的,这是一个致命问题,导致SJF算法无法实现)。
优先权法(Priority Scheduling)
轮转法(Round Robin,RR)
多层队列(Multilevel Queue)
- 系统进程队列,要实时响应。
 - 交互进程队列(要求响应非常及时)—— RR
 - 交互编辑队列(人输入键盘,移动鼠标等,响应时间可能半秒也可以,对操作系统来说已经很长了。交互要求不是很高)—— RR
 - 批处理进程队列,不需要交互。—— FCFS
 
2.磁盘调度
- 先到先(FCFS):按照请求到达的顺序处理他们
 - 最短寻到时间优先(SSTF):通过尽可能少的读写头移动满足所有未解决的请求(最近优先)
 - SCAN磁盘调度:读写头先移动到一端进行满足,再移动到另一端进行满足请求
 
代码调试过程中遇到的问题
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    int a,b,answer,reply,i,R = 0,F = 0,op,m,n;
    while(R<7.5)
    {
        for(i = 0; i < 10; i++)
        {
            srand((unsigned)time(NULL));
            a = rand() % 10 + 1;
            b = rand() % 10 + 1;
            op = rand()%4 + 1;
            switch(op)
            {
            case 1:
                answer = a+b;
                printf("%d+%d=",a,b);
                break;
            case 2:
                answer = a-b;
                printf("%d-%d=",a,b);
                break;
            case 3:
                answer = a*b;
                printf("%d*%d=",a,b);
                break;
            case 4:
                answer = a/b;
                printf("%d/%d(整除)=",a,b);
                break;
            }
            scanf("%d",&reply);
            if(reply == answer)
            {
                srand((unsigned)time(NULL));
                m = rand()%4 + 1;
                switch(m)
                {
                case 1:
                    printf("Very good!\n");
                    break;
                case 2:
                    printf("Excellent!\n");
                    break;
                case 3:
                    printf("Nice work!\n");
                    break;
                case 4:
                    printf("Keep up the good work!\n");
                    break;
                }
                R++;
            }
            else
            {
                srand((unsigned)time(NULL));
                n = rand()%4 + 1;
                switch(n)
                {
                case 1:
                    printf("No. Please try again.\n");
                    break;
                case 2:
                    printf("Wrong. Try once more.\n");
                    break;
                case 3:
                    printf("Don’t give up!\n");
                    break;
                case 4:
                    printf("Not correct. Keep trying.\n");
                    break;
                }
                F++;
            }
        }
        printf("总分为:%d\n正确率为:%d%%\n",R*10,(R*100)/(R+F));
    }
    return 0;
}
循环中没有将M归为零,导致第二次循环累加
死循环最初没有设置结束。
 上周错题总结:
Which of the following is executed by the Java Virtual machine?
A. Procedure
B. Interpreter
C. Bytecode
D. Paradigm
E. Compiler
答案:C
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 0/0 | 1 | 16 | |
| 第二周 | 120/120 | 2 | 18 | |
| 第三周 | 150/270 | 2 | 16 | |
| 第四周 | 200/470 | 2 | 18 | |
| 第五周 | 240/710 | 2 | 16 | |
| 第六周 | 260/970 | 2 | 18 | |
| 第七周 | 300/1270 | 2 | 22 | |
| 第八周 | 300/1570 | 2 | 20 | |
| 第九周 | 400/1970 | 2 | 22 | 
                    
                
                
            
        
浙公网安备 33010602011771号