
1.什么是bootloader,并简要描述其功能
Bootloade就是操作系统内核运行的一段小程序。
初始化系统硬件设备,建立内存空间映射;为内核设置启动参数,调用内核。
2.什么是gcc工具集,并简要描述其功能、特点
Gcc是GNU项目的编译器套件,能够编译用C,C++和Objective C编写的程序。
Gcc有以下特点:
程序员可以在编译的任何阶段结束后停止整个编译过程,以检查编译器在该阶段的输出信息;gcc可以再生成的二进制执行文件中加入不同数量的种类的调试码,也能优化代码。
3.阅读下面shell程序,写出执行结果:
#!/bin/sh
sum=0
var=1
while [ "$sum" -le 20 ]
do
echo before operation, sum=$sum,var=$var
var=$(($var+1))
sum=$(($sum+$var))
done
echo end operation, sum=$sum,var=$var
exit 0
before operation, sum=0,var=1
before operation, sum=2,var=2
before operation, sum=5,var=3
before operation, sum=9,var=4
before operation, sum=14,var=5
before operation, sum=20,var=6
end operation, sum=27,var=7
4.阅读下面shell程序,写出执行结果:
#!/bin/sh
for name in Tom Jack Harry
do
echo "$name is my friend"
done
exit 0
Tom is my friend
Jack is my friend
Harry is my friend
5.画出进程状态转换图
6.简述进程的三种基本状态及其转换关系
运行状态(Running):进程占有CPU,并在CPU上运行。处于此状态的进程数目小于等于CPU的数目;
就绪状态(Ready):进程已经具备运行条件,但由于CPU忙暂时不能运行,只要分得CPU即可执行;
阻塞/等待状态(Blocked/Waiting):进程因等待某种事件的发生而暂时不能运行(如I/O操作或进程同步),此时即使CPU空闲,该进程也不能运行
状态变化:
就绪状态 → 执行状态
执行状态 → 就绪状态
执行状态 → 阻塞状态
阻塞状态 → 就绪状态
7.简述进程的构成,并说明进程的每一个组成部分的作用。
进程由程序段、数据段和进程控制块(PCB, process control block/TCB, task control block,任务控制块)这3个部分组成
程序段是进程中能被进程调度程序在CPU上执行的程序代码段,通过程序段的执行可以实现程序的特定功能。
数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行后产生的中间或最终结果数据。
进程控制块是进程实体的一部分,是操作系统中重要的记录型数据结构,其中存放了操作系统所需的、用于描述进程情况和控制进程运行所需的全部信息。
8.完成下述linux操作:
1进入/home目录: cd /home
2在/home目录下创建src子目录: mkdir /src
3将/mnt/hgfs/vmshare目录下的demo.src.tar.gz文件拷贝到src目录:cp -rf /mnt/hgfs/vmshare/demo.src.tar.gz /src
4将src目录下的压缩文件demo.src.tar.gz文件展开: gunzip demo.src.tar.gz
5打开当前目录下的demo.c文件进行编辑:: vi demo.c
9.在虚拟机linux环境下,出于源码备份的目的,需要将/home/src目录下的所有文件打包、压缩,然后通过虚拟机共享功能拷贝到windows环境中。请写出相关的linux命令
在虚拟机linux环境下,在VM –> setting –> options中设置linux和windows的共享目录名。例如,在linux下,共享目录为vmshare,绝对路径
为/mnt/hgfs/vmshare,在xp下,路径为E:\\vmshare。打开终端输入如下命令:cd /home/feng/src
tar –cvf src.tar bzip2 -z src.tar // tar -zcvf src.tar.gz /src
cp src.tar.bz /mnt/hgfs/vmshare
ls -l//-a 在备份中保持尽可能多的源文件结构和属。输完命令后
,在windows环境中E:\\vmshare中查看有没有这个src.tr.gz。
10.什么是宿主机(host),什么是目标机(target),开发嵌入式系统时为什么会提出上述概念
宿主机(Host) :是用于开发嵌入式系统的计算机。
目标机(Target):一般在嵌入式应用软件开发期间使用,用来区别与嵌入式系统通信的宿主机,它可以是嵌入式应用软件的实际运行环境,也可以是能够替代实际运行环境的仿真系统,但软硬件资源通常都比较有限。
。嵌入式开发就是对于除了电脑之外的所有电子设备上操作系统的开发,开发对象有手机,掌上电脑,机电系统等。 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
11.什么是交叉编译技术,并简述在嵌入式系统中采用该技术的原因
交叉编译技术:
交叉编译技术,是一种在一个异构平台上编译出目标平台程序的一种技术。
原因:目标平台所需要的bootloader和os内核都还没有建立,只能通过交叉编译
目标机设备不具备相应的处理能力和存储空间
12.简述要在本课程的s3c2410试验箱上,从一个裸机环境开始,完成系统初始化过程,需要进行哪些步骤的工作
烧写vivi 配置超级终端,重新分区
烧写内核zImage
烧写根系统文件root
设置共享目录
分析设计题:(20分)
在linux环境下设计一个软件项目,包含3个源码文件,完成下述功能:
a)创建头文件stu_defs.h,定义学生数S=5,课程门数N=3,并声明input_score.c中定义的子函数
b)创建文件input_score.c,完成从键盘上接收S个学生的N门课程的成绩
c)创建文件main.c,调用input_score.c中定义的子函数,输出每个学生N门课程的成绩、平均分及每门课的平均成绩
d)用gcc命令完成对本项目的编译,产生的可执行文件名为:stu_core
要求写出上述三个文件的源码,并列出在编辑、编译过程中所有涉及到的linux命令。
(a)vi stu_defs.h
int S=5
int N=3
void input_score();
(b)vi input_sorce.c
(c)vi main.c
#include #include”stu_defs.h” main() { input_score(); } (d)gcc –c input_score.c –I./home/src gcc –o input_score input_score.c –I./home/src 在Linux操作系统下,完成下列任务: 1)编程实现以下功能 主程序hello.c,主程序通过头文件hello.h调用message函数 头文件hello.h中声明了message函数 message函数由message.c定义,完成打印“This is a message!”功能 #include #include”hello.h” main() { message(); } 文件 hello.h:void message (); 文件 message.c: #include”stdio.h” void message(char Message); { printf(“This is a message!\\n”); } 2)用gcc命令完成对本项目的编译,生成可执行文件hello gcc –c message.c -I./home/src gcc –o hello hello.c message.o –I./home/src 要求写出上述三个文件的源码,并列出在编辑、编译过程中所有涉及到的linux命令 设公共汽车上有一位司机和一位售票员,他们的活动如下: A)对应的执行条件和释放条件,设置对应的信号量 semaphore S_DoorClose; // 初始为0 semaphore S_Stop; // 初始为0 B)用PV原语实现司机与售票员之间的同步关系 售票员 while(上班时间) { 关闭车门; V(S_DoorClose); 售票; P(S_Stop); 打开车门; }
请分析:司机 售票员 启动车辆 售票 正常行车 开车门 到站停车 关车门
