- 浏览: 43979 次
最新评论
文章列表
计算机系统结构的定义:
计算机系统结构是其所处环境中最高层次的概念,是对计算机系统中各个机器之间界面的划分和定义,以及对各级界面上,下的功能进行分配。也称为体系结构。
计算机体系结构指的是计算机系统设 ...
- 2015-05-17 23:16
- 浏览 398
- 评论(0)
语法
对于某些应用,我们所完成的简单的词类识别也许足够用了;而另一些应用需要识别特殊的标记序列并执行适当的动作。传统上,对这样的一套动作描述成为语法。
使用右箭头”->”意味着可以用一个新的符号取代一套特殊的标记。
例如:
subject ->noun\pronoun 指示一个新的符号subject是名词或代词。
词法分析程序和语法分析程序的通信
当一起使用lex扫描程序和yacc语法分析程序的时候,语法分析程序是比较高级别的例程。当他需要来自输入的标记时,就调用词法分析程序yylex()。然后,词法分析程序从头到尾扫描输入识别标记。他一找到对u语法分析程序有意义的标 ...
- 2015-05-17 15:32
- 浏览 1034
- 评论(0)
编制一个字符替换函数rep(char *s,char *s1,char *s2),实现将已知字符串s中所有属于字符串s1中的字符都用字符串s2中的对应字符代替。这里使用指针实现。
举个例子:
char s[] = “ABCABC”;
char s1[] = “AB”;
char s2[] = “XY”;
运行该函数之后,变为”XBYXBY”
那么可以这么想,s1和s2分别位于两个数组中,从s的第一个字符开始,寻找s1中是否有与该元素相等的字符,如果存在该字符,就将s2中相应位置的字符替换成s中的字符。
后面我们使用指针实现的函数也是基于这个道理的。
下面附上我的实现代码: ...
- 2015-05-16 15:42
- 浏览 288
- 评论(0)
实现一个模块用它遍历当前进程的父进程和任务队列,并将遍历的结果输出到一个proc 文件中(遍历可以从 current 当前进程开始,父进程遍历到初始化进程,遍历任务队列可以利用 for_each_process 宏)。
下面是我的内核模块的实现部分:
/************************************************************
* 使用内核模块从当前进程开始先前遍历,知道找到第一个进程为止 *
* 并将遍历的结果保存到proc文件中 *
********************* ...
- 2015-05-16 10:45
- 浏览 408
- 评论(0)
1:SELinux的访问控制是基于所有系统资源包括进程的安全上下文。安全上下文包含三个元素:用户,角色和
类型标识符。类型标识符是访问控制最关键的元素。
在SELinux中,强制访问控制(TE)是访问控制主要的特征。通过指定主体的标识(也被称作域标识)作为源和
客体的标识作为目的的allow规则,能够允许主体对客体的访问。通过指定使用一系列为每一个客体类定义的权限的
客体类也可以允许访问。
TE的一个关键的好处就是能够控制程序以给定的域标识运行,所以允许访问控制到个人程序而不是低安全层的用户。一个程序进入一个域的能力(也就是以给定的进程标识运行)成为域转换,并且被SELinux的al ...
- 2015-05-15 23:02
- 浏览 253
- 评论(0)
编写一个将整数n(1 <= n <= 9999)转换成罗马数字。
整数n(1<=n<=9999)与罗马数字表示有以下对应关系
1000 - m,有几个1000就有几个m对应
900 - 两个字符cm
500 - 一个字符d
400 - 两个字符cd
100 - 一个字符c,有几个100就用几个c表示
90 - 两个字符xc
50 - 一个字符l
40 - 两个字符xl
10 - 一个字符x,有一个10就用几个x
9 - 用两个字符ix表示
5 - 用一个字符v来表示
4 - 用两个字符iv表示
1 - 用一个字符i表示,有几个1就用几个i
假如说我们有一个数 ...
- 2015-05-15 21:16
- 浏览 389
- 评论(0)
* 内核动态模块的的功能和作用*
Linux 模块是一些可以独立于内核单独编译的内核函数和数据类型集合,是可增删的内核部分。模块在内核启动时装载称为静态装载,在内核已经运行时装载称为动态装载。模块可以扩充内核所期望的任何功能,但通常用于实现设备驱动程序.
模块最基本的框架
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
static ini __init 模块名_init(void)
{
/*
* 安装模块的初始化工作 „„
*/
return ...
- 2015-05-15 16:48
- 浏览 425
- 评论(0)
接着第一节中的第一个示例,我们扩展第二个示例,将词法分析程序扩展为识别不同的词性。
下面是程序示例:
%{
/*
* 扩展第一个示例以识别其他的词性
*
*/
%}
%%
[ \t ]+ /* 忽略空白 */;
is |
am |
are |
were |
was |
be |
being |
been |
do |
does |
did |
will |
would |
should |
can |
could |
has |
had |
go {printf("%s: is a verb",yytext);}
very |
simply |
gently ...
- 2015-05-14 21:23
- 浏览 224
- 评论(0)
此实例的要求是在两个已经摆好顺序的数组寻找第一个相同的元素在第一个数组中的指针。
这个实例的思想比较好,如果我来做的话,就是先从第一个数组的第一个元素开始,每次取出一个元素,与第二个数组的每一个元素进行比较,当元素值相等的时候,返回元素的指针。
但是在此实例中,使用了另外一种思想,在我看来降低了程序的时间复杂度。其思想为:由于两个数组都已经排好顺序,则分别从两个数组的第一个元素开始,比较大小,将较小的元素的数组的位置指向下一个,知道找到相同的元素为止。
下面我程序的实现部分:
#include <stdio.h>
#define NULL 0
/**
* 在已知两个从 ...
- 2015-05-14 13:48
- 浏览 191
- 评论(0)
在已知数表中找出第一个与指定值相等的元素的下标和指针。这个实例还是比价简单的。
我的思路是,首先创建一个struct结构,该结构中有两个成员变量,一个是数组元素的下标,一个是数组元素的指针值,当程序进程查找的 ...
- 2015-05-11 20:39
- 浏览 314
- 评论(0)
此时,玩SELinux系统就有些价值了。例如,我们使用一个带有严格策略的Fedora Core 4 的发行版。这些大多数例子基本上都能在Red hat Enterprise Linux version 4或者是Fedora Core 5上运行了。虽然可能有些不同,但是你也可能能够使用其他发 ...
- 2015-05-10 02:17
- 浏览 281
- 评论(0)
指向数组的指针变量成为数组指针变量。一个数组是由连续的一块内存单元组成的。数组名就是这块连续内存单元的首地址。
该实例我们实现了使用数组的指针引用数组,利用数组名以及下标引用数组等。
其中,使用数组的 ...
- 2015-05-10 00:18
- 浏览 251
- 评论(0)
该C实例是一个比较简单的实例,但是在该实例中,重点介绍了C语言中比较常用的也是容易出错的指针变量,其中包括指针变量的赋值,指针变量的运算等等。该实例实现了通过使用指针变量来比较3个整形数据,使其从小到大排列,实现比较简单,下面附上我的代码:
#include <stdio.h>
/**
* 通过指针比较三个整数的大小
* @brief main
* @return
*/
/**
* 指针,即为变量的地址;指针变量,即数值为
* 指向变量地址的变量
* 指针变量的类型:
* 对指针变量的类型说明包括3个内容
* 1:指针类型说明,即定义变量为一个指针变量
...
- 2015-05-09 23:34
- 浏览 412
- 评论(0)
练习怎样编写调用内核的时间测量功能为应用程序测量和精确定时。通过该练习我们可以进一步理解 Linux 内核的定时机制及其数据结构以及怎样从用户空间去访问内核空间的时间数据。
从用户空间去获取系统时间数据需要以下 ...
- 2015-05-09 21:21
- 浏览 445
- 评论(0)
按照自制操作系统的步骤,首先需要使用二进制编辑器编辑一个.img文件,编辑完成之后,可以有两种运行方式:
1:可以将该img文件烧进软盘文件中,重新启动计算机
2:使用qume虚拟机运行。
我们采用第二种方式,首先我们需要获取其中的.img文件,在其光盘中的”30天自制操作系统光盘\OS\projects\01_day\helloos0\
helloos.img”中。我们实现的方式是:
1:将其中OS文件夹下的tolset文件夹拷贝到自己希望的一个地方
2:在tolset文件夹下创建helloos0目录
3:将光盘中的位置”30天自制操作系统光盘\OS\projects\0 ...
- 2015-05-09 02:11
- 浏览 1299
- 评论(0)