代码改变世界

设备管理 (含补交作业)

2019-06-13 21:20  linmingcong  阅读(330)  评论(0编辑  收藏  举报

设备管理:

课后练习P294页第5、7题。

画出示意图并给出结果。

像考试一样写答题方式。

 

 

虚拟存储管理

P251,习题20

(1)

0AC5 对应的二进制位 0000 1010 1100 0101

所以页号和页框分别为2和8

8的二进制位1000

所以0AC5H对应的地址为10001011000101

 

(2)

AC5H二进制为1 1010 1100 0101 ,

 所以页号和页框分别为3和10
所以2AC5对应的地址为0010101011000101

P252,习题31

(1)走向:0,0,1,1,0,3,1,2,2,4,4,3

(2)FIFO:

 LRU:

OPT:

 

分页存储管理和分段存储管理

1.采用相联存储器后地址转换过程,用图表示出来

2.详述分段管理和分页管理的区别。

1,分段是信息的逻辑单位,由源程序的逻辑结构及含义所决定,是用户可见的,段长由用户根据需要来确定,段起始地址可从任何内存地址开始。在分段方式中,源程序(段号、段内位移)经链接装配后仍保持二维(地址)结构,引入目的是满足用户模式化程序设计的需要。

2,分页是信息的物理单位,与源程序的逻辑结构无关,是用户不可见的,页长由系统(硬件)确定,页面只能从页大小的整数倍地址开始。在分页方式中,源程序(页号、页内位移)经链接装配后变成一维(地址)结构,引入目的是实现离散分配并提高内存利用率。

1、页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。

段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。

2、页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。

段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。

3、分页的作业地址空间是维一的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。

3.P249 习题11。

(1)649  

(2)1727  

(3)2301  

(4)140  

(5)1956

 

 

 操作系统实验二:并发程序设计

一、实验目的

1)加深对进程并发执行的理解,认识多进程并发执行的实质。

2)观察进程共享资源的现象,学习解决进程互斥和同步的方法。

 

二、实验要求:

本实验要求用高级语言,启动多进程并发运行,设计相应代码,显示进程无关并发、进程共享变量并发的运行结果。并完成实验报告。

  

三、实验内容:

分别实现以下四种情况的并发:

1.并发的进程之间无关,显示进程名称,开始与结束时间。

模拟多终端售票情况,并发的多个终端进程之间共享剩余票数这个共享变量。

2.用全局变量实现。

3.用进程间共享数据机制实现。

4.用进程间共享数据机制和加锁机制实现。

 

四、实验过程与结果

  1. 算法思想与设计
  2. 算法实现代码
  3. 运行结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
public class ThreadTest3 {
    public static void main(String[] args) {
        Shop shop = new Shop();
        for (int i = 1; i <= 5; i++) {
            new Thread(shop,"").start();
        }
    }
}
 
class Shop implements Runnable{
    String name;
    ticket t;
     
    public Shop() {
        t.total = 100;
        t.count = 0;
        }
 
    public void run() {
        while (t.total>0) {
            synchronized (this) {
                try {
                    Thread.sleep(new Random().nextInt(1000));
                catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+"_____"+t.count);
                t.total--;
                t.count++;
            }  
        }
 
    }
}
 
class ticket {
    int total;
    int count;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class ThreadTest3 {
    public static void main(String[] args) {
        Shop shop = new Shop();
        for (int i = 1; i <= 5; i++) {
            new Thread(shop,"").start();
        }
    }
}
 
class Shop implements Runnable{
    String name;
    ticket t;
     
    public Shop() {
        t.total = 100;
        t.count = 0;
        }
 
    public void run() {
        while (t.total>0) {
            synchronized (this) {
                try {
                    Thread.sleep(new Random().nextInt(1000));
                catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+"_____"+t.count);
                t.total--;
                t.count++;
            }  
        }
 
    }
}
 
class ticket {
    int total;
    int count;
}

 

用信号量及其PV操作处理实际问题

将生产者和消费者问题深入理解、融会贯通。

1.书上课后练习P187-43

semaphore mutex , sweat , water ,orange ;
semaphore empty;
process Supply(){
   while(1){
        P(empty)  ;
        产生一个0-2的随机数 ;
        if(s==0)
           V(sweat) ;
        else if( s==1)
           V(water);
        else V(orange) ;
   }         
}
process P1(){
     while(1){
       P(orange) ;
       P(mutex) ;
       V(mutex) ;
       V(empty) ;
       }
}

process P2(){
     while(1){
       P(sweat) ;
       P(mutex) ;
       V(mutex) ;
       V(empty) ;
       }
}

process P3(){
     while(1){
       P(water) ;
       P(mutex) ;
       V(mutex) ;
       V(empty) ;
       }
}

2.IPO问题:有多个输入进程、多个处理进程和多个输出进程。输入进程把数据逐步输入到一个有M个单位缓冲区B1上,经处理进程处理之后放到有N个单位的缓冲区B2上,由输出进程进行输出。

  1. 这个问题有哪些进程?进程之间有什么样的制约关系?
  2. 用信号量及PV操作写出这些进程之间的同步算法。
  3. S1=S2=S3=S4=0;
    mutex1=1;mutex2=1;
    process input
    begin
       输入数据;
       P(S1);
       P(mutex1);
       数据放入B1(in1);
       in1=(in+1)%M;
       V(mutex1);
       V(S2);
    end
    process handle
    begin
       P(S2);
       P(mutex1);
       从B1(out1)取出数据;
       out1=(out+1)%M;
       V(mutex1);
       V(S1);
       处理数据;
       P(S3);
       P(mutex2);
       数据放入B2(in2);
       in2=(in2+1)%N;
       V(mutex2);
       V(S4);
    end
    process output
    begin
       P(S4);
       P(mutex2);
       从B2(out2)取出数据;
       out2=(out2+1)%N;
       V(mutex2);
       V(S3);
       输出数据;
    end

3.探索哲学家问题的正确解法。

 

处理器管理与进程管理

  1. 用图文描述组成进程的要素,并说明其作用。
  2. 用图文描述什么是进程切换,为什么进行进程切换,进程切换的步骤?
  3. 用图文描述模式转换、进程切换、进程状态转换三者之间的关系?
    1.  

  4. python练习:

观察父进程、子进程

观察进程运行状态

输入多个作业的作业编号,到达时间,所需CPU时间,形成列表,以备算法使用。

jobs =[]

job1 =  job.split(',')

jobs.append(job1)