zoukankan      html  css  js  c++  java
  • 20145329 《信息安全系统设计基础》第十周学习总结

    20145329 《信息安全系统设计基础》第十周学习总结

    教材学习内容总结

    操作系统:

    • (1)硬件相关(管家婆)
      通过三个抽象实现概念完成此功能
      文件:对I/O系统进行了抽象
      虚存:对主存和I/O系统进行了抽象
      进程:对CPU、主存和I/O系统进行了抽象

    • (2)应用无关(服务生)
      通过三个服务完成此概念
      GUI:会用鼠标即keyi使用操作系统
      Shell:要记忆系统命令,更多通过键盘使用操作系统
      系统调用:可以创建自己的工具让大家更好的使用操作系统,可以有三种方法使用系统调用
      通过软中断指令int 0x80来陷入内核
      使用syscall直接调用
      通过glibc使用API调用

    Makefile的编码

    target ... : prerequisites ...  
    
                command   
    

    target:也就是一个目标文件,可以是Object File也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。
    prerequisites:就是,要生成那个target所需要的文件或是目标。
    command:也就是make需要执行的命令。(任意的Shell命令)

    Linux中学习Linxu系统编程的方法:

    • 仔细研究manpages
    • 问题驱动,使用man -k key1|grep key2|...在manpages中搜索你要的内容
    • 阅读.h文件: 可以通过grep -nr XXXX /usr/incldue查找相关的宏定义,结构体定义,类型定义等
    • 解决一个问题要多个系统调用,可以参考manpages的SEE ALSO部分来得到相关系统调用的信息

    编程要点

    • 排序:文件名读入数组,qsort()排序

    • 分栏:文件名读入数组,计算列宽和行数

    • .和..:加入-a选项,没有-a不显示隐藏文件

    • -l:功能不同,单独实现

    • 系统相关调用
      st_mode:文件类型和许可权限
      st_uid:用户所有者的ID
      st_gid:所属组的ID
      st_size:所占的字节数
      st_nlink:文件链接数
      st_mtime:文件最后修改时间
      st_atime:文件最后访问时间
      st_ctime:文件属性最后改变时间

    • 模式转换为字符
      二进制掩码可以三位一组用八进制表示,原因:权限读写执行时三位一组的

    • 将用户ID转换成用户名
      cat /etc/passwd命令查看用户列表,再利用strtok函数解决或者使用getpwuid函数

    • 组ID转化为组名
      相关文件/etc/group

    代码调试中的问题和解决过程

    虚拟机崩了,还没修好,看的别人的调试~

    (代码实践补充)

    cp1.c

    • 功能:复制文件或目录
    • 用法:./cp1 [路径/源文件] [路径/目的文件](默认当前目录)
    • 代码
    • 函数帮助文档查看
    • 运行结果

    echostate.c

    • 代码
    • 函数帮助文档
    • tcgetattr函数用于获取与终端相关的参数。参数fd为终端的文件描述符,返回的结果保存在termios结构体中
    • 打印错误信息
    • 显示输入字符,值为0000010
    • 本地模式标志,控制终端编辑功能
    • 运行结果

    setecho.c

    • 功能:设置echo的状态,用来改变输入指令是否可见。输入y(或是以y开头的一串字符),命令可见;否则(即输入不以y开头的字符),命令不可见

    • 代码

    • 运行结果

    fileinfo.c

    • 功能:查看文件信息

    • 代码

    • 查看帮助文档

    • st_nlink 连到该文件的硬链接数目,刚建立的文件值为1

    • st_uid 用户ID

    • st_gid 组ID

    • st_size 文件字节数

    • st_mtime 最后一次修改时间

    • 运行结果

    filesize.c

    • 功能:查看文件大小

    • 代码

    • 运行结果

    ls1.c

    • 功能:显示指定目录下的所有文件

    • 代码

    • 运行结果

    ls2.c

    • 功能:显示指定目录下的文件详细信息
    • 运行结果

    spwd.c

    • 功能:显示当前目录路径

    • 分析
      代码由4个函数组成,分别是:
      main函数:主函数
      get_inode函数:取某个文件的索引信息(进入点)
      printpathto函数:打印路径
      inum_to_name函数:将长整型的索引信息转化为字符串的形式

    • main函数:主函数

    • printpathto函数:打印路径

    • inum_to_name函数:将长整型的索引信息转化为字符串的形式

    • get_inode函数:取某个文件的索引信息(进入点)

    • 运行结果

    testioctl.c

    • 功能:查看窗体大小信息
    • 代码

    • isatty:判断文件描述词是否是为终端机,如果参数所代表的文件描述词为一终端机则返回1,否则返回0。
    • ioctl:是设备驱动程序中对设备的I/O通道进行管理的函数,其中d是用户程序打开设备时使用open函数返回的文件标示符,request是用户程序对设备的控制命令
    • 运行结果

    who1.c

    • 功能:从UTMP_FILE文件中读取系统中用户信息

    • 运行结果

    本周代码托管截图

    感悟

    本周学习进入了新的阶段,之前是直接调用系统,现在开始学习如何解读系统中所调用的代码,以及自己编写一些类似的系统代码。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 50/50 1/1 20/20
    第二周 50/100 1/2 30/50
    第三周 100/200 1/3 20/70
    第四周 0/200 0/3 20/90
    第五周 50/250 1/4 20/110
    第六周 50/300 1/5 20/130
    第七周 0/300 1/6 20/150
    第八周 0/300 1/7 20/170
    第九周 100/400 2/9 20/190
    第十周 0/400 1/10 20/210

    参考资料

  • 相关阅读:
    iOS下的四舍五入
    下载私有库 classdump命令 privateFrameworks
    苹果账号下添加测试设备
    新的Mac下如何配置开发者账号信息
    open开发笔记
    C#面向对象基础抽象类
    C#面向对象基础继承
    C#面向对象基础接口
    C#面向对象基础对象引用
    COJ1165(Nearest Numbers)
  • 原文地址:https://www.cnblogs.com/jdy1453/p/6082170.html
Copyright © 2011-2022 走看看