OS 操作系统 进程 线程 文件 设备 C# 多用户 登陆 课程设计 报告 算法 FCFS
本系统由用C#语言进行编写和实现,可实现多用户登录。各模块简介如下:
1 文件部分分为C盘和D盘两个磁盘块,在每个磁盘块中均可进行新建、删除、编辑、格式化、显示
属性及个文件等操作。如可新建文件夹、文本文件和可执行文件,并可对新建的文件进行编辑。
此次课程设计中文件系统采用显示链接FAT表。磁盘是断电后内容不丢失的,因此用文件模拟磁盘。要求模拟系统存在两块硬盘:每个磁盘分成128块,每块64字节,第0,1块存放FAT表,第2块存放初始盘快。
文件的逻辑结构采用流式结构;
文件的内容:
文件的内容均采用文本文件,系统中有两种文件:
一种是存放任意字符的文件
一种是可执行文件:可执行文件的内容就是系统内进程的程序体。
文件中要有一种特定命令的“可执行”文件,文件中的命令非常简单,仅仅包括以下几种指令:
i=?; 给i赋值一位数
i++; i加1
i--; i减1
!??;
end;
第一个?为A,B,C中某个设备,第二个?为一位数,表示使用设备的时间(由于没有
实际设备,所以无法知道设备何时工作完成,所以假定一个数,这个数随着系统时间
增加而递减,减到0时,认为是设备工作完成);
end. 表示文件结束,同时将结果写入文件out,其中包括文件路径名和i的值。
用户接口
用户接口提供用户命令接口,要求文件名中既可以支持相对路径的文件名,也可支持绝对路径的路径 名。要求实现以下命令:
创建文件:create 盘符:\文件名(目录名).e(t).
建立新文件,如果原来存在同名文件要提示是否覆盖。
拷贝文件:copy 盘符:\文件名(目录名).e(t). to 盘符:
拷贝文件可同名拷贝,也可更名拷贝
删除文件:delete盘符:\ 文件名(目录名).t(e).
注意:磁盘内和磁盘间文件移动的不同,磁盘内的移动实际只是目录的改变,并不需要真的移动文件 ;磁盘间的文件移动实际上是先拷贝文件到目标磁盘,然后再删除源文件。
2 进程部分
进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。
硬件工作的模拟:
中央处理器的模拟
用函数CPU( )(该函数不能有参数)模拟中央处理器。
该函数主要负责解释“可执行文件”中的命令。
i=?; 给i赋值一位数
i++; i加1
i--; i减1
!??;
end;
在模拟系统界面上,我们显示了:
就绪队列----进程名称、优先级;
阻塞队列----进程名称、优先级、阻塞原因;
正在运行的进程,该进程的优先级,以及正在运行的指令,中间结果,执行结果;
系统内存的占用情况,剩余空间等,以便显示的提示用户执行新的进程。
注意:CPU只能解释指令寄存器IR中的指令。一个进程的运行时要根据进程执行的位置,将对应的指令 存放到指令寄存器中。
3 存储部分
存储管理部分主要实现主存空 间的分配和回收、存储保护。
模拟系统中,采用页是存储管理方案(PCB区域单独存放)
系统区包括pcb区域
用数组模拟其他内存区域,大小为512字节。
主存分配策略
当有程序要存放入主存时,查看空闲块总数是否够用,如果够用,先分配一块用来存放页表,然后查 位示图中为“0”的位,根据查到的位所在的字号和位号可计算出对应的块号,同时在该位填上占用 标志“1”,并填写页表;不够用,分配失败。
块号=字号*字长+位号
主存回收策略根据页表归还存储空间时,可以根据归还块的块号推算出在位示图中的位置:
字号=[块号/位示图中字长]
位号=块号mod位示图中字长
然后把这一位的“1”清成“0”,表示该块成为空闲块了
最后回收页表所占用空间
内存部分分为32个物理块,当为分配时均为绿色,分配后变为红色, 进程正在读取的物理块显示
黄色。
4 设备部分
设备管理主要包括设备的分配和回收。
设备的模拟
模拟系统中有A、B、C三种独占型设备,A设备3个,B设备2个,C设备1个。
数据结构
因为模拟系统比较小,因此只要设备表设计合理既可。
C# socket 源码 多人聊天
C#是微软随着VS.net新推出的一门语言。它作为一门新兴的语言,有着C++的强健,又有着VB等的RAD特性。而且,微软推出C#主要的目的是为了对抗Sun公司的Java。大家都知道Java语言的强大功能,尤其在网络编程方面。于是,C#在网络编程方面也自然不甘落后于人。本文就向大家介绍一下C#下实现套接字(Sockets)编程的一些基本知识,以期能使大家对此有个大致了解。首先,我向大家介绍一下套接字的概念。
套接字基本概念:
套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。
套接字可以根据通信性质分类,这种性质对于用户是可见的。应用程序一般仅在同一类的套接字间进行通信。不过只要底层的通信协议允许,不同类型的套接字间也照样可以通信。套接字有两种不同的类型:流套接字和数据报套接字。
套接字工作原理:
要通过互联网进行通信,你至少需要一对套接字,其中一个运行于客户机端,我们称之为ClientSocket,另一个运行于服务器端,我们称之为ServerSocket。
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
所谓服务器监听,是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
所谓客户端请求,是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
所谓连接确认,是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
计算机网络原理 CRC C# socket 路由算法
实验一 3
1.实验内容 3
2.实验原理 3
3.实现过程 5
4.运行结果 9
实验二 9
1.实验内容 9
2.实验原理 9
3.实现过程 10
4.运行结果 16
实验三 20
1.实验内容 20
2.实验原理 20
3.实现过程 21
心得体会 25
参考文献 26
汇编实验 源码 斐波那契函数FIB(N) 统计学生成绩
一、实验--斐波那契函数FIB(N) 3
1.实验目的和要求 3
2.实验内容描述 3
3.程序流程图 3
4.程序源码 4
5.运行结果 7
二、实验--统计学生成绩 7
1.实验目的和要求 7
2.实验内容描述 7
3.程序流程图 8
4.程序源码 9
5.运行结果 10
三、心得体会 10
四、参考文献 11
编译原理 源码 实验报告
1.词法分析……………………………………….
2.语法分析……………………………………….
3.语义分析……………………………………….
4.心得体会……………………………………….
北大ACM 题目分类 程序设计
对北京大学的OJ的题目做了详细的分类,对初参加ACM的人很有指导意义!
ASP.NET 三层结构 源码 C#
该代码简单而且全面的实现了一个三层结构的留言板,对初学者很有指导意义!
数字电路详细课件 电工技术
课件分为10个章节,详细的介绍了数字电路的各个部分,对想系统学习数字电路技术的人很有帮助!
C++模板类二叉查找树的实现
这个程序实现了二叉查找树的删除,增加,先序遍历,后序遍历,中序遍历,还有一些非递归和层次遍历!