操作系统第一课
来源:互联网 发布:网络歌手七妹 编辑:程序博客网 时间:2024/05/16 00:43
每学期都要讲授操作系统课程,于我,就是陈年旧饭,在一遍遍的翻炒中,能不烦么?怎么才能为之不烦?于学生,是一门抽象的无法触手可摸的云朵,仰望云端,但无法喊雨滴下来。
好在,操作系统是一座深厚的矿藏,你永远不敢宣称自己彻底了解它,充其量,我们只是遥望了一下这座山的四周。而各大公司都在挖掘这块宝藏。Google一边声称操作系统像隐身衣一样将消失在众人的视野中,一边有强悍的研发队伍,不断给免费的Linux 穿外衣。穿上虚拟机的Android俨然成了手机厂家追逐的明星,而借助于web的浓妆,依然搭乘Linux的便车,chrome OS就成了web界横空出世的大姐大了。在这些热闹的背后,我还得给学生从1+1讲起,什么是操作系统,什么是进程,什么是死锁等等,这使我从内心对蜡烛肃然起敬,但我是不甘心被燃烧成灰烬的,于是,希望学生们也能点燃起老师心中的希望。
什么是操作系统?操作系统能做什么?为什么每每我讲的兴趣盎然,可学生们交上来的报告,对操作系统的描述依然是书上文字的搬家?难道大量的输入信息,既没有在学生们的存储器中存放,也没有通过大脑CPU的加工,输出的仅是寥寥无几的空洞信息?
于是,还是以实例说明操作系统到底干什么,一段拷贝程序的片段呈现给大家:
inf=open(“/floppy/TEST”,O_RDONLY,0);
out=open(“/mydir/test”,O_WRONLY,0600);
do{
l=read(inf,buf,4096);
write(outf,buf,l);
} while(l);
close(outf);
close(inf);
然后通过说明这个程序的执行过程,阐述操作系统到底是如何参与的。实际上,这个执行过程足以写一本书,但在此,只能泛泛地说明,其中涉及的open, close,read,write的四个函数都讲离不开操作系统的参与。于是,建议学生,在不同操作系统下写出完整的程序,实现文件的拷贝。课后,一名同学发来他的程序:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <io.h>
int main(int argc,char *argv[])
{
int nReadHand; //只读文件句柄
int nWriteHand; //只写文件句柄
int nBytes; //从文件中读出字符的长度
char cBuf[10]; // 文件的存储数组
/*argv[1] = "copysource.txt";
argv[2] = "copydonate.txt";
*/
puts(argv[1]);
puts(argv[2]);
if((nReadHand =open(argv[1],O_RDONLY)) == -1) //打开要复制的文件,以只读方式打开
{
fprintf(stderr,"Read Error!/n");
exit(0);
}
if((nWriteHand =open(argv[2],O_CREAT)) == -1) //打开文件复制文件的的目标文件
{
fprintf(stderr,"Create Error!/n");
exit(0);
}
close(nWriteHand);
if((nWriteHand =open(argv[2],O_WRONLY)) == -1) //打开文件复制文件的的目标文件
{
fprintf(stderr,"Write Error!/n");
exit(0);
}
do
{
nBytes = read(nReadHand,cBuf,10); //读出一页的内容
write (nWriteHand,cBuf,nBytes);
}
while(nBytes);
close(nReadHand);
close(nWriteHand);
return 0;
}
者出现错误,那么原因何在?
学生让我给他看看这个程序到底有什么错误,我没有直接给出答案,而是回复如下:
“面对这样的问题,你是怎样思考的,这比问题本身还重要。
- 操作系统第一课
- 操作系统---第一,三章
- 第一部分:操作系统概述
- 第一部分:嵌入式操作系统
- 第一讲:操作系统概述
- linux 操作系统学习 第一课 基本命令处理
- 第一个操作系统详细注释
- 我的第一个操作系统
- 学习操作系统Os第一记
- 学写操作系统(一) -- 第一个“操作系统”
- 国产第一个桌面操作系统-Co-CreateLinux2005
- 实现自己的操作系统 第一部分
- 纪念一下我的第一个操作系统
- 天河排第一 操作系统是麒麟
- 第一部分:枝繁叶茂的操作系统篇
- 第一个Hello,OS World操作系统
- 自己写操作系统,第一个hello world!
- 动手写自己的第一个"操作系统"
- 端到端与点到点的区别
- 随机贪心算法简介(搜出一个自己高中的时候写的程序)
- 网络共享(Ftp,NFS,Samba)-------NFS
- 通过PowerShell操作SQLConnection .NET类
- 原创小工具:Idea Generator
- 操作系统第一课
- [转]近君子,远小人
- 最近可能不经常来csdn了
- 好好爱自己
- Linux shell脚本全面学习
- 隨手可及的預測方法
- 使用powerdesigner的一些注意细节
- dd
- C++中CONST