Day33

“高响应比优先调度算法(Highest Response Ratio Next)是一种对CPU中央控制器响应比的分配的一种算法。HRRN是介于FCFS(先来先服务算法)与SJF(短作业优先算法)之间的折中算法,既考虑作业等待时间又考虑作业运行时间,既照顾短作业又不使长作业等待时间过长,改进了调度性能。”

 

- rwx rwx rwx :[档案权限][档案拥有者权限[档案所属群组权限][其他人权限]

 

1.当读写锁是写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞
2.当读写锁在读加锁状态时,所有试图以读模式对它进行加锁的线程都可以得到访问权,但是以写模式对它进行加锁的线程将会被阻塞
3.当读写锁在读模式的锁状态时,如果有另外的线程试图以写模式加锁,读写锁通常会阻塞随后的读模式锁的请求,这样可以避免读模式锁长期占用,而等待的写模式锁请求则长期阻塞。

 

 “活跃度失败意思就是调用不到了线程了,那么三种都有可能; 死锁也就是互相等着对方释放资源,结果谁也得不到;活锁可能发生让某一个线程一直处于等待状态,其他线程都可以调用到;饥饿我就感觉用抢占式说好说,每次来就执行优先级高的,那么优先级低的可能永远执行不到。”

在使用锁保证现场安全时可能会出现 活跃度 失败的情况主要包括 饥饿、丢失信号、和活锁、死锁 等。【多线程除了死锁之外遇到最多的就是活跃度问题了】

关于"时间片切换",当进程已经获得了除cpu外所有的资源,这时的状态就是就绪态,当分配到了时间片就成了执行态,当时间片用完之前一直未进入阻塞态的话,此后便继续进入就绪态。所以进程的就绪与阻塞是完全不同的。

进程有3个状态:就绪态。执行态、阻塞态。三种状态的转换包含有:

就绪->执行,执行->就绪,执行->阻塞,阻塞->就绪

等待I/O、进程sleep、等待解锁等原因都会导致进程暂停。

 缺页中断调入新页面,肯定要修改页表项和分配页框,所以Ⅰ、Ⅲ可能发生,同时内存没有页面,需要从外存读入,会发生磁盘I/O。 

 

父进程和子进程都有自己独立的地址空间;

父进程结束,所有子进程都结束,进程结束,所有线程都结束;

如果多个进程同时占有对方需要的资源而同时请求对方的资源,而它们在得到请求之前不会释放所占有的资源,那么就会导致死锁的发生,也就是进程不能实现同步。

多线程和多进程都会引起死锁,一般说的死锁指的是进程间的死锁。

C:他已经进入就绪状态了。

D:原因 长期在就绪也就是等待,再不升高优先级就要饿死了 。

A:人家刚运行,你就降低,有可能会被抢断。 

若文件的数据不在内存中,则进程进入睡眠模式的目的是等待内存对磁盘上文件的映射,因为磁盘的读取比较慢,所以事进入睡眠模式。

read是系统调用,所以CPU从用户态切换到核心态。

open系统调用应该包含文件的名称,read只是包含输入流(read包含文件描述符)。

响应比=(作业执行时间十作业等待时间)/作业执行时间。高响应比调度算法在等待时间相同的情况下,作业执行时间越短响应比越高,满足短任务优先。随着等待时间增加,响应比也会变大,执行机会就增大,所以不会产生饥饿现象。

NowCoder开了一家早餐店,这家店的客人都有个奇怪的癖好:他们只要来这家店吃过一次早餐,就会每天都过来;并且,所有人在这家店吃了两天早餐后,接下来每天都会带一位新朋友一起来品尝。
于是,这家店的客人从最初一个人发展成浩浩荡荡成百上千人:1、1、2、3、5……
现在,NowCoder想请你帮忙统计一下,某一段时间范围那他总共卖出多少份早餐(假设每位客人只吃一份早餐)。

 

输入描述:

测试数据包括多组。
每组数据包含两个整数from和to(1≤from≤to≤80),分别代表开店的第from天和第to天。
 

输出描述:

对应每一组输入,输出从from到to这些天里(包含from和to两天),需要做多少份早餐。
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        long[] arr=new long[80];
        arr[0]=1;
        arr[1]=1;
        for (int i = 2; i < arr.length; i++) {
            arr[i]=arr[i-1]+arr[i-2];
        }
        while (scanner.hasNext()){
            int from=scanner.nextInt();
            int to=scanner.nextInt();
            long ret=0;
            for (int i = from-1; i <= to-1 ; i++) {
                ret+=arr[i];
            }
            System.out.print(ret+" ");
        }
    }
}

一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?

 

输入描述:

输入包含多组数据。

每组数据包含两个字符串s,t,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。
 

输出描述:

对应每组输入,输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就输出0,每个结果占一行。

示例1

输入

abcde a3
aaaaaa aa

输出

0
3
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String str1 = scanner.next();
            String str2 = scanner.next();
            int count = 0;
            while (str1.contains(str2)) {
                str1 = str1.replaceFirst(str2, "");
                count++;
            }
            System.out.println(count);
        }
    }
}

 public String replaceFirst(String regex, String replacement);

String regex:中,字符串中匹配的正则表达式或字符串的第一个子字符串。

String replacement: 用来替换第一个匹配项的字符串。

例如:

有一个源字符串:java woai java,i like jajavava i enjoy java
删除该字符串中所有的"java"
输出结果:源字符串中总共包含:5 个 java ,删除java后的字符串为: woai,i like i enjoy

public class Main {
    public static void main(String[] args) {
        String str = "java woai java,i like jajavava i enjoy java ";
        String del = "java";
        int count = 0;
        while (str.contains("java")) {
            //如果有java的话,就把第一次出现的java用空字符串代替,并覆盖原str字符串
            str = str.replaceFirst("java", "");
            //统计java出现的次数
            count++;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值