自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_40995354的博客

计算机基础

  • 博客(19)
  • 收藏
  • 关注

原创 迷宫求解

回溯法要实现迷宫,首先得知道回溯法,回溯法又称试探法,是一种选优搜索法,按选优条件向前搜索,以达到目标。回溯法采用试错的思想,它尝试分步的去解决一个问题。在分布解决问题的过程中,它尝试发现现有的分布答案 不能得到有效的正确的解答的时候,它将取消上一步甚至上几步的计算,再通过其他的可能分布解答再次尝试寻找问题的答案。深度优先搜索是搜索算法的一种,它的策略是尽可能深的搜索某一分支。在深...

2018-04-24 23:04:20 165

原创 线程

线程概念在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。这里的内部是指指向同一个地址空间。一切进程至少都有一个执行线程。进程和线程进程是系统分配资源竞争的基本单位。线程是程序执行的最小单位。线程共享进程数据,但也拥有自己的一部分数据:线程ID,一组寄存器,栈,errno,信号屏蔽字,调度优先级。 同一地址空间,因此Text...

2018-04-22 15:49:30 135

原创 进程间通信

进程间通信进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在什么双方都可以访问的介质呢?进程的用户空间是相互独立的,一般而言是不能相互访问的,唯一的例外是共享内存区。但是,系统空间却是”公共场所“,所以内核显然可以提供这样的条件。除此之外,那就是双方都可以访问的外设了。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过”注册表“或其他数据库中的某些表项和记录交换信...

2018-04-22 11:12:25 116

原创 将二元信号量P/V操作,封装成动态/静态库,并分别使用并测试

P,V操作 PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思。 ftok函数,先不去了解它的作用来先说说为什么要用它,共享内存,消息队列,信号量他们三个都是找一个中间介质来进行通信的,这种介质多的是。就是怎么区分开来,就像唯一一个身份证来区分人一样。只要唯一就行,就想起来了文件的设备编号和节点,它是唯一的,但是直接用它来做识别好像不太好,不过可以用它来产生一个号。ftok()就出...

2018-04-22 11:04:38 482

原创 调研同步与互斥概念原理,了解生产者消费者原理

现代操作系统提供了一个并发控制环境,即系统中同时活动着多个不同的进程,这些进程共享同一个CPU,内存或I/O设备。特别是对于linux操作系统来说,其多任务,多用户,分时实时混合的性质决定了多个进程在某种程度上彼此依赖或相互制约的关系,这些关系我们叫“并发关系”,按其性质可以分为同步和互斥两类。进程互斥由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为...

2018-04-21 11:11:43 418

原创 练习ipcs -q/m/s于ipcrm -q/m/s的使用,并总结

ipcs:显示IPC资源。是Linux上提供一些进程间通信方式的信息,包括共享内存,消息队列,信号。ipcs -a  是默认的输出信息,打印出当前系统所有的进程间通信方式的信息。ipcs -q 打印出使用消息队列进行进程间通信的信息。ipcs -m  打印出使用共享内存进行进程间通信的信息。ipcs -s 打印出使用信号进行进程间通信的信息。ipcrm:手动删除IPC资源。移除一个消息对象。或者共...

2018-04-18 16:53:23 851

原创 数据结构链式队列

对队列进行以下操作:1.入队列2.出队列3.取队首元素队列先进先出,要想实现入队列,从队尾插入元素;要想实现出队列,从队首删除元素。在这里,我们定义头尾指针,首先对空队列插入元素,让头指针等于尾指针,如果非空,依然让头指针指向队首,尾指针指向要插入的元素。删除元素时,直接让头指针指向下一个元素,要删除的元素就成了无效的元素,这也就完成了头删。取队首元素时,函数的返回值代表是否取成功,0表示失败,1...

2018-04-16 17:42:03 347

原创 模拟实现shell,使它支持重定向功能

我们都知道用户是通过操作系统来对我们的硬件或者软件进行操作的,但是我们平时在使用计算机的时候并没有直接与操作系统进行交流。而在linux下我们通常通过终端输入命令,但是你有没有想过为什么我们在终端输入命令,操作系统就能认识呢?这中间存在一个命令行解释器shell,也就是所谓的外壳程序,来对我们输入的命令进行解释,调用相关的系统调用接口,从而实现各种操作。在这里我们就来模拟一个shell。要模拟sh...

2018-04-16 14:43:36 774

原创 编写简单的add/sub/mul/div函数,并打包成动/静态库,并分别使用

静态库(.a):在windows下后缀为(.lid),程序在编译链接的时候把库的代码链接到可执行文件里。程序运行的时候将不再需要静态库。动态库(.so):在windows下后缀为(.dll),程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码。在可执行文件开始运行以前,外部函数的机...

2018-04-15 21:10:16 3753

原创 练习open/read/write/close等文件相关系统调用接口,纵向对比fd与FILE结构体

写文件#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<string.h>int main(){ umask(0);//在创建新文件或目录时屏蔽掉新文件或目录不应有的访问允许权限 int fd = open("file",...

2018-04-15 17:05:36 354

原创 数据结构顺序队列

对队列进行1.入队列2.出队列3.取队首元素队列先进先出,允许在一端进行插入操作,另一端进行删除操作。允许插入的一端称为队尾,允许删除的一端称为队首。我们head和tail标记队首和队尾。出队列时,将head向后移动,入队列时,将tail向后移动,再给tail赋值。为了方便判断队列是否满了,我们让head指向头部,tail指向队列最后一个元素的下一个位置,[head,tail)。tail移动到最后...

2018-04-15 16:37:33 263

原创 带头节点的不带环的单向链式栈的基本操作

完成链式栈 1.初始化 2.销毁 3.入栈 4.出栈 5.取栈顶元素     如果LinkStack stack定义的stack是在栈上的,那么它结构体里面的head也是在栈上的;但如果stack是malloc出来的,像这样(LinkStack* stack=malloc( )),那head变量就在堆上。head究竟是在栈上还是堆上,得看它所属的具体在哪。seqstack.h//单向带头结点的不带...

2018-04-13 15:20:44 307

原创 完成顺序栈的基本操作

1.初始化 2.销毁 3.入栈 4.出栈 5.取栈顶元素 seqstack.h#pragma once #include<stdio.h>#include<stddef.h>#include<stdlib.h>typedef char SeqStackType;typedef struct SeqStack{ SeqStackType* data;//指针类型,...

2018-04-09 14:47:02 478

原创 数据结构:带头节点带环的双向链表

1.尾插2.尾删3.头插4.头删5.查找指定元素的位置6.在指定位置之前插入元素7.在指定位置之后插入元素8.删除指定位置的元素9.删除指定值的元素10.删除指定所有相同的元素11.求链表的长度12.判断链表是否为空dlinklist.h//双向的带环的带头结点链表#pragma once#include<stdio.h>#include<stdlib.h>#include...

2018-04-08 10:50:40 192

原创 封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递

2018-04-07 11:35:12 367

原创 编写自主shell

2018-04-07 10:38:57 96

原创 学习进程创建, 等待, 终止. 使用代码实现.

进程的创建3153先打印before消息,然后打印after,另一个after消息由3154打印的。fork之前父进程独立执行,fork之后,父子两执行流分别执行。fork之后,谁先执行完全由调度器决定。进程等待(waitpid)从本质上讲,waitpid和wait的作用是相同的,但waitpid多出了两个可由用户控制的参数pid和optionspid_t waitpid(pid_t pid,in...

2018-04-07 09:24:59 273

原创 调研popen/system, 理解这两个函数和fork的区别.

system函数在执行过程中经过fork->exec->wait,但system在执行的过程会一直等待,知道shell运行完才退出,所以system为串行执行syetem在执行的过程中对SIGCHLD、SIGINT、SIGQUIT都做了处理SIGCHLD是子进程在退出时给父进程发的一个信号,system中屏蔽了SIGCHLD信号,原因是为了system调用能够及时的退出并且能够正确获得...

2018-04-05 11:21:14 238

原创 数据结构_完成单链表的后续操作实现以及链表面试题

1.初始化链表2.尾插一个元素到链表中3.尾删一个元素4.头插一个元素5.头删一个元素6.查找元素在链表中的位置7.在pos之前插入元素8.在pos之后插入元素 9.删除指定位置的元素10.删除指定值的元素11.指定值的所有相同元素都删掉.12.判定链表是否为空13.求链表的元素个数14.逆序打印单链表15.不允许遍历链表, 在 pos之前插入16.实现约瑟夫环17.单链表逆置18.单链表逆置(删...

2018-04-03 19:41:44 333

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除