2023年银行从业考试个人理财模拟试题

上传人:桔**** 文档编号:547784354 上传时间:2023-01-09 格式:DOC 页数:20 大小:67KB
返回 下载 相关 举报
2023年银行从业考试个人理财模拟试题_第1页
第1页 / 共20页
2023年银行从业考试个人理财模拟试题_第2页
第2页 / 共20页
2023年银行从业考试个人理财模拟试题_第3页
第3页 / 共20页
2023年银行从业考试个人理财模拟试题_第4页
第4页 / 共20页
2023年银行从业考试个人理财模拟试题_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《2023年银行从业考试个人理财模拟试题》由会员分享,可在线阅读,更多相关《2023年银行从业考试个人理财模拟试题(20页珍藏版)》请在金锄头文库上搜索。

1、2011-2012学年第2学期 操作系统课程设计 要求:1每位同学按学号尾数作对应的课题,如1号同学做课题一,2号同学作课题二。2允许同学之间换题。3允许用不同的方法作课题,即可以在Windows、Linux下采用各种编程语言和开发工具实现课题所要求的功能。(所附资料仅供参考)课程设计报告格式一、 课程设计目的二、 课题内容三、 设计思路四、 源代码五、 运行与测试六、 心得体会课题一: 编写一个小型命令处理器smallshell一、目标 设计并实现一个简单的命令处理程序,名字为smallshell。要求具备以下基本功能:1.支持交互式的用户界面2.支持内置命令:cd,exit,设置搜索路径p

2、ath等。3.支持可执行文件的运行4.支持输入输出重定向功能5.支持管道功能二、准备知识1.交互式用户界面 在smallshell中,显示如下格式的交互界面:sernameservername:pathname$ 需要涉及以下函数:includechar *getlogin(void);/*getlogin函数返回与当前用户关联的用户名*/int gethostname (char *name,size_t namelen);/*gethostname函数把机器的网络名写到字符串name中,name的长度为namelen,因此该字符串的长度不得超过namelen个字符,函数成功返回0,否则返回

3、-1。*/#includechar *getcwd(char *name,size_t size);/*getcwd函数返回一个指向当前工作目录的指针,并将当前工作目录存于name中,如果该目录名长度超过size给出的长度,返回NULL。若size为0,返回-1。*/例如,下面这段程序模仿了pwd命令:#include#include#define VERYBIG 200void my_pwd(void);main() my_pwd();void my_pwd(void);char dirnameVERYBIG;if(getcwd(dirname ,VERYBIG)=NULL) printf(

4、“getcwd error”);else printf(“%s”,dirname); 2.支持内置命令:cd,exit,设置搜索路径path等如果用户输入内置命令,smallshell根据命令名及参数进行相应处理。下面以cd,exit,path命令为例,分别说明其实现所涉及的函数。 (1)cd命令 该命令用于切换当前目录,可以通过chdir()函数实现。chdir()使当前目录变为path所指向的目录,该函数的用法如下: #include int chdir(const char *path);chdir在失败的情况下返回-1。需要注意的是,chdir只影响调用进程,并不会影响启动这个进程的s

5、hell进程。例如,使用chdir(“/usr/bin”);可切换到/usr/bin目录。(2)exit命令该命令用于退出smallshell,需要调用exit函数实现, exit函数用法如下:#includevoid exit(int status);(3) path命令 该命令用于设置搜索路径。可以设置一个全局变量gpath,实现对搜索路径的更新。3.支持可执行文件的运行如果用户输入的不是内置命令,而是一个可执行文件名,则需要在设置的路径中搜索该命令,并在此环境中执行。可以通过access()函数先对该命令进行测试: #includeint access(const char *pathn

6、ame, int mode);该函数根据用户id测定进程是否具有访问某个特定文件的权限。参数pathname表示的是文件的名字,参数mode有三种可能的取值,它们的定义在中可以找到:R_OK 调用进程是否具有读访问权限W_OK 调用进程是否具有写访问权限X_OK 调用进程是否具有执行权限access函数返回0,表示用户对文件具有访问权限,返回-1表示不具有此种访问权限。如果命令可执行,下一步是创建smallshell的子进程,之后让子进程执行这个可执行文件。因此需要用到fork和exec类函数。fork函数的使用请参考课程实验指导书,exec类函数有6个,这里可以用其中的execve()函数,

7、用法如下:#includeint execve(const char *pathname, char *const argv,char *const envp;pathname参数是子进程要执行的文件的路径名,argv是一个参数字符串列表,envp是一个环境变量字符串和值的列表。execve成功不会返回,失败返回-1.例:cmd=”helloworld”; /helloworld是一个可执行文件char * envp=“PATH=/home/stu1”,0;execve(cmd,NULL,envp); /执行helloworld 4.支持输入输出重定向功能每个进程的描述符中包含一个file_s

8、truct结构,记录用户的文件打开情况,这个结构称为用户打开文件表。并且用户打开文件表的信息在 fork()和exec()调用后将仍然保持和继承。进程的打开文件表记录进程已经打开的文件描述符,即指向文件对象的指针。通常系统为正在执行的进程自动打开三个文件:标准输入(键盘),标准输出(显示器),标准错误。通常对应文件描述符0,1,2 。因此,输入输出重定向实际就是将标准输入和标准输出的文件描述符指向用户指定的文件。可以使用下列函数实现:includefid=open(const char *pathname, int flags);int dup2(int oldfd, int newfd);o

9、pen函数打开一个文件,返回该文件的描述符。参数pathname是文件的路径名,flag指定文件存取模式,取值为:O_RDONLY,O_WRONLY,O_RDWR,O_CREATE等。dup2函数将老的文件描述符oldfd复制到新的文件描述符newfd,即创建一个oldfd的拷贝。例如: fid=open(filename,O_WRONLY|O_CREAT); /以写的方式创建并打开文件filename dup2(fid,1); /将文件描述符复制到标准输出,即输出时便输出到新建文件中, /从而实现了输出重定向。5.支持管道功能shell中的管道功能是将一个命令的输出作为另一个命令的输入。可以

10、用pipe函数创建无名管道。返回的pipe文件描述符只能被同一家族的父子进程使用, 因此可以用fork函数和exec函数创建两个不同的进程并使其具有父子关系,之后使一个进程的输出重定向到管道,另一个进程的输入重定向到管道,从而实现管道功能。程序框架如下:int fd2;pipe(fd);if(fork0) /父进程 close(fd0); /关闭用于读文件的描述符 dup2(fd1,1); /父进程实现输出重定向 . else /子进程 close(fd1); /关闭用于写的文件描述符 dup2(fd0,0); /子进程实现输入重定向 .三、smallshell总体结构 交互界面命令解析内部命

11、令可执行文件创建子进程执行I/O重定向创建管道课题二 使用System V的IPC机制实现“生产者-消费者”问题一、 目标学习System V的进程间通信机制,使用信号量和共享内存实现经典进程同步问题“生产者-消费者”问题。具体要求:1.创建信号量集,实现同步互斥信号量。2.创建共享内存,模拟存放产品的公共缓冲池。3.创建并发进程,实现进程对共享缓冲池的并发操作。二、准备知识1.信号量集(1)创建信号量集include int semget(key_t key,int nsems, int permflags);该调用与文件的open或creat相似,参数key是一个标识信号量集的数,参数ns

12、ems是信号量集中包含的信号量的个数,元素索引从0到nsems-1,permflags是semget函数将实现的操作,有两个值供选择,在头文件有定义,这两个值可以单独使用,也可用“或”位运算符连起来使用:IPC_CREAT :创建一个key所代表的新信号量集,类似于creat。IPC_EXCL:同IPC_CREAT都设置时,若key对应信号量集存在,则返回-1,并将错误指示变量errno置EEXIST。例如:semid=semget(key_t)0010,1, 0600|IPC_CREAT|IPC_EXCL);注意:这里0600表示对该信号量集的存取权限,设置的方式同文件存取权限的设置一致。0

13、600表示对信号量集的创建者具有读写权限,对同组用户和其他用户无任何权限。(2)信号量控制#includeint semctl(int semid,int sem_num,int command,union semun ctl_arg);该函数可以对semid表示的信号量集中的第sem_num号信号量执行command指示的操作。sem_num是信号量的索引号,注意,索引号从0开始。command给出要完成何种功能,功能可分为种:标准IPC功能、只对单个信号量起作用的功能、影响整个信号量集的功能。标准IPC函数IPC_STAT:把状态信息放入ctl_arg.bufIPC_SET:用stl_ar

14、g.buf中的值设置信号量的所有权/许可权IPC_RMID:从系统中删除信号量集(此时sem_num参数忽略)单信号量操作GETVAL:返回信号量的值SETVAL:设置信号量的值,写入ctl_arg.valGETPID:返回最后一个对sem_num号信号量执行semop操作的进程idGETNCNT:返回等待sem_num号信号量值增加的进程数,即在该信号量上等待的进程数GETZCNT:返回等待sem_num号信号量值变为0的进程数。全信号量操作GETALL:返回所有信号量的值,结果保存在ctl_arg.array,忽略参数sem_numSETALL:通过ctl_arg.array更新所有信号量的值。参数sem_num与上述第二类功能选项一起使

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号